中文和unicode互转

    计算机语言中,关于中文汉字的描述,都是用unicode编码,这就势必引出一个问题,如果前端显示出一个unicode编码的字符,比如\u6621如何将这个字符转成我们认识的汉字呢,相反,如果有一个汉字,要将其转为unicode显示出来,又该如何做呢,这里分前后端两种实现。后端采用java语言,前端采用JavaScript。

    其实算法是一样的:

    unicode转中文:1.将字符串按照\u分解为多个16进制数字,2.将16进制转化为10进制并强制转化为char

    中文转unicode:获取中文的祖父编码charcode,将其转化为16进制(不足4位的前面0补足),然后前面添加\u

    java写法:

    public String unicode2String(String unicodeStr){
        StringBuffer sb = new StringBuffer();
      String[] hex = unicode.split("\\\\u");
      for(int i=0;i<hex.length;i++){
         int data = Integer.parseInt(hex[i],16);
         sb.append((char)data);
      }
      return sb.toString();
    }
    public String String2Unicode(String str){
        int lenth = str.length();
        StringBuffer sb = new StringBuffer();
        for(int i=0;i<lenth;i++){
           int code = str.charAt(i);
           String s = Integer.toHexString(code);
           sb.append("\\u");
           for(int j=s.length();j<4;j++){
              sb.append(0);
           }
           sb.append(s);
        }
        return sb.toString();
    }

    javascript写法:

    function unicode2String(unicodeStr){
        var hex = unicodeStr.split("\\u");
        var sb = "";
        for(var i=0;i<hex.length;i++){
            var data = parseInt(hex[i],16);
            sb+=String.fromCharCode(data);
        }
        return sb;
    }
    function string2Unicode(str){
        var len = str.length;
        var sb = "";
        for(var i=0;i<len;i++){
            var code = str.charCodeAt(i);
            var s = code.toString(16);
            sb += "\\u";
            for(var j= s.length;j<4;j++){
                sb+="0";
            }
            sb+=s;
        }
        return sb;
    }

    转载请注明出处:http://gagalulu.wang/blog/detail/15 您的支持是我最大的动力!