ホームページ  >  記事  >  ウェブフロントエンド  >  文字列をgb2312またはutf-8でエンコードされたパラメータに変換する(js版)_javascriptスキル

文字列をgb2312またはutf-8でエンコードされたパラメータに変換する(js版)_javascriptスキル

WBOY
WBOYオリジナル
2016-05-16 17:37:351271ブラウズ

多くの場合、中国語のパラメータを URL に直接渡すと、読み取った中国語が文字化けしてしまいます。では、これらのパラメータをどのように変換すればよいでしょうか。

以下の方法を紹介します
1. 新しい UrlEncode.js を作成し、そこに次のコードをコピーします

コードをコピーします コードは次のとおりです:

//Server.UrlEncode エンコード関数の JS バージョン
String.prototype.UrlEncodeGB2312 = function () {
var str = this;
str = str.replace(/./g, function (sHex) {
window.EnCodeStr = "";
window.sHex = sHex;
window.execScript(' .EnCodeStr=Hex (Asc(window.sHex))', "vbscript");
return window.EnCodeStr.replace(/../g, "%{blogcontent}amp;"); ;
return str;
}
String.prototype.UrlEncode = function () {
var s = escape(this);
var retV = "", retE = "";
if (sa[0] != "") {
retV = sa[0]>}
for (var i = 1; i if (sa[i].substring(0, 1) == "u") {
retV = Hex2Utf8(Str2Hex(sa[i]) substring(1, 5)));
if (sa[i].length > 4)
retV = sa[i].substring(5);
else retV = " %" sa[ i];
}
return retV;
}
function Str2Hex(s) {
var c = "";
var n;
var ss = "0123456789ABCDEF" ;
var digS = "";
for (var i = 0; i c = s.charAt(i); = ss.indexOf (c);
digS = Dec2Dig(eval(n));
return digS;
}
関数 Dec2Dig(n1) {
var s = "";
var n2 = 0;
for (var i = 0; i n2 = Math.pow(2, 3 – i); n1 >= n2) {
s = '1';
n1 = n1 – n2;
else
s = '0';
return s;
}
関数 Dig2Dec(s) {
var retV = 0;
if (s.length == 4) {
for (var i = 0; i retV = eval(s.charAt(i)) * Math.pow(2, 3 – i);
return
}
return -1 ;
}
関数 Hex2Utf8(s) {
var retS = "";
var ss = ""; = 16) {
tempS = "1110" s.substring(0, 4);
tempS = "10" s.substring(4, 10); 10, 16) ;
var sss = "0123456789ABCDEF";
for (var i = 0; i retS = "%"; (i * 8 , (eval(i) 1) * 8);
retS = sss.charAt(Dig2Dec(ss.substring(0, 4))); .substring(4) , 8)));
}
return retS;
}


2.もちろんこれは私たちのものです ((String.UrlEncode()) は文字列を utf-8 でエンコードされた URL パラメータに変換できます ((String.UrlEncodeGB2312()) は文字列を gb2312 でエンコードされたパラメータに変換できます、とても良いです、O(∩ _∩)Oはは〜
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。