1.引言

JS本身就支持unicodestring功能,一共有三种方式和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 

点赞(1) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部