计算机语言中,关于中文汉字的描述,都是用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 您的支持是我最大的动力!