分析 大家知道,encodeURI和encodeURIComponent會(huì)用utf-8編碼,如“我”編碼后是“%E6%88%91”。據(jù)實(shí)驗(yàn),似乎沒有參數(shù)指定編碼的地方。只有另尋他法。 " /> 精品国产乱码久久久久久下载 ,偷拍国产精品在线播放,大胸女晃奶动态图

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

js下用gb2312編碼解碼實(shí)現(xiàn)方法

需求
在js中將中文用gb2312編碼。如,“我”編碼后應(yīng)該是“%CE%D2”。

分析
大家知道,encodeURI和encodeURIComponent會(huì)用utf-8編碼,如“我”編碼后是“%E6%88%91”。據(jù)實(shí)驗(yàn),似乎沒有參數(shù)指定編碼的地方。只有另尋他法。
大致分析有如下幾種解決方案:
1. 用js創(chuàng)建一個(gè)隱藏的iframe并指定其為gb2312編碼,將需要轉(zhuǎn)換的文本放到iframe的form的一個(gè)input中,將form指定為get方式并提交,
然后獲取其url并解析,應(yīng)該可以得到其gb2312編碼后的文本。
2. 用ajax傳到服務(wù)器上編碼,然后傳回來。
3. 在js中創(chuàng)建一個(gè)gb2312編碼表。

實(shí)現(xiàn)
第一種方案個(gè)人感覺太折騰,需要在多個(gè)不同的瀏覽器下測試。
第二種方案需要有服務(wù)器配合。
下面是第三種方案的實(shí)現(xiàn):
最開始打算使用數(shù)組存儲(chǔ)編碼表,后來為了減小js文件大小,改用string來存儲(chǔ)
于是,js代碼如下:

代碼
復(fù)制代碼 代碼如下:
function encodeToGb2312(str){
var strOut="";
for(var i = 0; i < str.length; i++){
var c = str.charAt(i);
var code = str.charCodeAt(i);
if(c==" ") strOut +="+";
else if(code >= 19968 && code <= 40869){
index = code - 19968;
strOut += "%" + z.substr(index*4,2) + "%" + z.substr(index*4+2,2);
}
else{
strOut += "%" + str.charCodeAt(i).toString(16);
}
}
return strOut;
}
function decodeFromGb2312(str){
var strOut = '';
for (var i=0;i<str.length; i++){
var c = str.charAt(i);
// +是空格
if (c == '+'){
strOut += ' ';
}
// a,b,c,1,2等,非%開頭的,直接返回本身
else if (c != '%'){
strOut += c;
}
// %開頭
else{
i++;
var nextC = str.charAt(i);
// 數(shù)字,則不是漢字
if (!isNaN(parseInt(nextC))){
i++;
strOut += decodeURIComponent(c+nextC+str.charAt(i));
}
else{
var x = new String();
try
{
var code = str.substr(i,2)+str.substr(i+3,2);
i = i + 4;
var index = -1;
while ((index = z.indexOf(code,index+1)) != -1){
if (index%4 == 0){
strOut += String.fromCharCode(index/4+19968);
break;
}
}
}catch(e){}
}
}
}
return strOut;
}
var z='{0}';

(這里沒考慮中文標(biāo)點(diǎn),主要是看unicode里中文標(biāo)點(diǎn)和日韓的標(biāo)點(diǎn)混在一起,分布在幾個(gè)地方,就懶得弄了。誰弄了可以發(fā)我一份,謝了。)
最后用.NET生成z處的代碼:

代碼
復(fù)制代碼 代碼如下:
StringBuilder sb = new StringBuilder();
string strFormat = @"...z = '"; // 前面的js代碼
const int MinHanzi = 19968;
const int MaxHanzi = 40869;
for (int i = MinHanzi; i < MaxHanzi + 1; i++)
{
byte[] bytes = Encoding.GetEncoding("gb2312").GetBytes(((char)i).ToString());
sb.AppendFormat("{0}{1}", Convert.ToString(bytes[0], 16).ToUpper(), Convert.ToString(bytes[1], 16).ToUpper());
}
string str = strFormat + sb.ToString(0, sb.Length - 1) + "';";
System.IO.File.WriteAllText(@"F:/encodeGb2312.js", str, Encoding.ASCII);

JavaScript技術(shù)js下用gb2312編碼解碼實(shí)現(xiàn)方法,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 青青草原伊人网 | 国产人妻麻豆蜜桃色在线 | 色-情-伦-理一区二区三区 | 99视频在线观看免费视频 | 精品AV国产一区二区三区 | 欲香欲色天天影视大全 | 美国色吧影院 | 公开超碰在线视频 | 一扒二脱三插片在线观看 | 日韩欧美亚洲精品综合在线 | 男同志video最新猛男 | 无码天堂亚洲国产AV久久 | 青青热久久综合网伊人 | va亚洲va天堂va视频在线 | 97亚洲狠狠色综合久久位 | 亚洲AV永久无码精品老司机蜜桃 | 日产日韩亚洲欧美综合搜索 | 黑吊大战白女出浆 | 国产日韩精品一区二区在线观看 | 中文字幕亚洲男人的天堂网络 | 欧美成 人 网 站 免费 | 国产午夜精品理论片久久影视 | 爱爱好爽好大好紧视频 | 国产品无码一区二区三区在线 | WWW国产亚洲精品久久久日本 | 泰国淫乐园实录 | 小莹的性荡生活40章 | 免费观看高清黄页网址大全 | 国产欧美一区二区精品久久久 | 国产AV果冻传奇麻豆 | 校花爽好大快深点h | 男女床上黄色 | 热久久免费频精品99热 | 超碰97 总站 中文字幕 | 夜色88V精品国产亚洲AV | 成人免费网址在线 | bl被教练啪到哭H玉势 | 国产在线精品国自产拍影院午夜 | 亚洲天堂视频网站 | NANANA在线观看高清影院 | 日韩丰满少妇无码内射 |