1.引言
JS本身就支持unicode轉string功能,一共有三種方式和String單個字符轉unicode編碼。
2.方法
//unicode轉String 1. eval("'" + str + "'");//當str中有帶分號'或者"時,會報錯,此時改成eval('"' + str + '"')即可 2. (new Function("return '" + str + "'"))();//同上 3. unescape(str.replace(/\u/g, "%u")); //string轉unicode(str字符的第i個) 1."\\u" + str.charCodeAt(i).toString(16);
3.樣例
//string2unicode var str_u='\u6211\u662f\u4e2d\u56fd\u4ebaChina'; var ret1 = eval("'" + str + "'");//我是中國人China var ret2 = (new Function("return '" + str + "'"))();//我是中國人China var ret3 = unescape(str.replace(/\u/g, "%u"));//我是中國人China //unicode2string var str = "我是中國人"; var str_u = string2unicode(str);//\u6211\u662f\u4e2d\u56fd\u4eba var str_s = unicode2string(str_u);// 我是中國人 function string2unicode(str){ var ret =""; for(var i=0; i<str.length; i++){ //var code = str.charCodeAt(i); //var code16 = code.toString(16); //var ustr = "\\u"+code16; //ret +=ustr; ret += "\\u" + str.charCodeAt(i).toString(16); } return ret; } function unicode2string(unicode){ return eval("'" + unicode + "'"); }
4.樣例(包含英文的String)
如果String包含有英文時,轉unicode編碼時會產生\\u34這樣子的,而JS自身的unicode轉字符串不能識別這種類型不足4位的unicode嘛。此時string2unicode需要修改一下即可。
function string2unicode(str){ var ret =""; var ustr = ""; for(var i=0; i<str.length; i++){ var code = str.charCodeAt(i); var code16 = code.toString(16); if(code < 0xf){ ustr = "\\u"+"000"+code16; }else if(code < 0xff){ ustr = "\\u"+"00"+code16; }else if(code < 0xfff){ ustr = "\\u"+"0"+code16; }else{ ustr = "\\u"+code16; } ret +=ustr; //ret += "\\u" + str.charCodeAt(i).toString(16); } var str_u = string2unicode("中國人CN");//"\u4e2d\u56fd\u4eba\u0043\u004e" var str_s = unicode2string(str_u);//中國人CN