欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

js中utf8和中文互转的方法

发布时间:2023/12/18 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 js中utf8和中文互转的方法 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

中文转utf8

function EncodeUtf8(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 += Hex2Utf8(Str2Hex(sa[i].substring(1,5)));}else retV += "%" + sa[i];}return retV; } function Str2Hex(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 += Dec2Dig(eval(n));}//return value;return digS; } function Dec2Dig(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;}elses += '0';}return s; } function Dig2Dec(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; } function Hex2Utf8(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(Dig2Dec(ss.substring(0,4)));retS += sss.charAt(Dig2Dec(ss.substring(4,8)));}return retS;}return ""; }

utf8转中文

// UTF8编码转成汉字字符串 function revertUTF8(szInput) {var x,wch,wch1,wch2,uch="",szRet="";for (x=0; x<szInput.length; x++) {if (szInput.charAt(x)=="%") {wch =parseInt(szInput.charAt(++x) + szInput.charAt(++x),16);if (!wch) {break;}if (!(wch & 0x80)) {wch = wch;} else if (!(wch & 0x20)) {x++;wch1 = parseInt(szInput.charAt(++x) + szInput.charAt(++x),16);wch = (wch & 0x1F)<< 6;wch1 = wch1 & 0x3F;wch = wch + wch1;} else {x++;wch1 = parseInt(szInput.charAt(++x) + szInput.charAt(++x),16);x++;wch2 = parseInt(szInput.charAt(++x) + szInput.charAt(++x),16);wch = (wch & 0x0F)<< 12;wch1 = (wch1 & 0x3F)<< 6;wch2 = (wch2 & 0x3F);wch = wch + wch1 + wch2;}szRet += String.fromCharCode(wch);} else {szRet += szInput.charAt(x);}}return(szRet); }

测试

var utf = EncodeUtf8("你好");var uni = revertUTF8(utf);console.log('utf:'+utf + ' '+'uni:' + uni);输出:monitor_pd.js:159 utf:%E4%BD%A0%E5%A5%BD uni:你好

总结

以上是生活随笔为你收集整理的js中utf8和中文互转的方法的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。