您的位置:首页 > 编程语言 > Java开发

中文和unicode互转

2016-01-17 15:10 302 查看
计算机语言中,关于中文汉字的描述,都是用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 您的支持是我最大的动力!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  中文 unicode 编码 java js