JS编码转换GB2312和UTF8

//JS编码转换GB2312和UTF8
function GB2312UTF8() {
this.Dig2Dec = function(s) {
var retV = 0;
if (s.length == 4) {
for (var i = 0; i < 4; i++) {
retV += eval(s.charAt(i)) * Math.pow(2, 3 – i);
}
return retV;
}
return – 1;
}
this.Hex2Utf8 = function(s) {
var retS = “”;
var tempS = “”;
var ss = “”;
if (s.length == 16) {
tempS = “1110” + s.substring(0, 4);
tempS += “10” + s.substring(4, 10);
tempS += “10” + s.substring(10, 16);
var sss = “0123456789ABCDEF”;
for (var i = 0; i < 3; i++) {
retS += “%”;
ss = tempS.substring(i * 8, (eval(i) + 1) * 8);
retS += sss.charAt(this.Dig2Dec(ss.substring(0, 4)));
retS += sss.charAt(this.Dig2Dec(ss.substring(4, 8)));
}
return retS;
}
return “”;
}
this.Dec2Dig = function(n1) {
var s = “”;
var n2 = 0;
for (var i = 0; i < 4; i++) {
n2 = Math.pow(2, 3 – i);
if (n1 >= n2) {
s += ‘1’;
n1 = n1 – n2;
} else s += ‘0’;
}
return s;
}

this.Str2Hex = function(s) {
var c = “”;
var n;
var ss = “0123456789ABCDEF”;
var digS = “”;
for (var i = 0; i < s.length; i++) {
c = s.charAt(i);
n = ss.indexOf(c);
digS += this.Dec2Dig(eval(n));
}
return digS;
}
this.Gb2312ToUtf8 = function(s1) {
var s = escape(s1);
var sa = s.split(“%”);
var retV = “”;
if (sa[0] != “”) {
retV = sa[0];
}
for (var i = 1; i < sa.length; i++) {
if (sa[i].substring(0, 1) == “u”) {
retV += this.Hex2Utf8(this.Str2Hex(sa[i].substring(1, 5)));
if (sa[i].length) {
retV += sa[i].substring(5);
}
} else {
retV += unescape(“%” + sa[i]);
if (sa[i].length) {
retV += sa[i].substring(5);
}
}
}
return retV;
}
this.Utf8ToGb2312 = function(str1) {
var substr = “”;
var a = “”;
var b = “”;
var c = “”;
var i = -1;
i = str1.indexOf(“%”);
if (i == -1) {
return str1;
}
while (i != -1) {
if (i < 3) {
substr = substr + str1.substr(0, i – 1);
str1 = str1.substr(i + 1, str1.length – i);
a = str1.substr(0, 2);
str1 = str1.substr(2, str1.length – 2);
if (parseInt(“0x” + a) & 0x80 == 0) {
substr = substr + String.fromCharCode(parseInt(“0x” + a));
} else if (parseInt(“0x” + a) & 0xE0 == 0xC0) { //two byte
b = str1.substr(1, 2);
str1 = str1.substr(3, str1.length – 3);
var widechar = (parseInt(“0x” + a) & 0x1F) << 6;
widechar = widechar | (parseInt(“0x” + b) & 0x3F);
substr = substr + String.fromCharCode(widechar);
}
else {
b = str1.substr(1, 2);
str1 = str1.substr(3, str1.length – 3);
c = str1.substr(1, 2);
str1 = str1.substr(3, str1.length – 3);
var widechar = (parseInt(“0x” + a) & 0x0F) << 12;
widechar = widechar | ((parseInt(“0x” + b) & 0x3F) << 6);
widechar = widechar | (parseInt(“0x” + c) & 0x3F);
substr = substr + String.fromCharCode(widechar);
}
} else {
substr = substr + str1.substring(0, i);
str1 = str1.substring(i);
}
i = str1.indexOf(“%”);
}

return substr + str1;
}
}

调用方法:
if($.browser.msie) {
var newtrans=new GB2312UTF8();
var content=newtrans.Utf8ToGb2312(content);
}
var xx=new GB2312UTF8();
//GB2312转UTF8
var Utf8=xx.Gb2312ToUtf8(“你aaa好aaaaa”);
//UTF8到gb2312转换
var Gb2312=xx.Utf8ToGb2312(Utf8);
alert(Gb2312);

郑重声明:

1 本资源来源于互联网,资源的版权归资源原作者所持有,受《中华人民共和国著作权法》等相关法律保护。

2 由于无法和原作者取得联系,所以上传的部分资源无法先通过原作者的同意就分享给大家了,如本资源侵犯了您(原作者)的权益,请联系我们(微信号 xiaohaimei1989),我们会立马删除您的资源,并向您表达诚挚的歉意!

3 本站是一个公益型网站,分享资源的目的在于传播知识,分享知识,收取一点点打赏的辛苦费是用于网站的日常运营开支,并非用于商业用途。

4 本站资源只提供学习和参考研究使用,使用过后请在第一时间内删除。本站不承担资源被单位或个人商用带来的法律责任。

发表评论