• JavaScript中unicode编码与String互转(三种方法)


    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='u6211u662fu4e2du56fdu4ebaChina';
    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);//u6211u662fu4e2du56fdu4eba
    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");//"u4e2du56fdu4ebau0043u004e"
    var str_s = unicode2string(str_u);//中国人CN  
  • 相关阅读:
    让美国震惊的10大营销案例
    嵌入式培训为什么选凌阳教育?
    推荐几本互联网行业的经典书目
    谈谈被误解的友情链接交换条件【转】
    20 tips for building modern sites while supporting old versions of IE
    国外PHP大师给初学者的8条建议
    专访许雪松:深入理解嵌入式开发
    周宁:做一个生意之前,请自问自己6个问题
    《时代》百大影响力人物:任正非李开复上榜
    TPL DataFlow初探(二)
  • 原文地址:https://www.cnblogs.com/fanbi/p/7326011.html
Copyright © 2020-2023  润新知