中文和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 您的支持是我最大的动力!