1 用最原始的方法解决乱码问题---直接手动转码

来源:互联网 发布:苹果电脑用于软件开发 编辑:程序博客网 时间:2024/05/30 22:41

一 在前端将中文转化为unicode

function encodeUnicode(str) {      var res = [];      for ( var i=0; i<str.length; i++ ) {      res[i] = ( "00" + str.charCodeAt(i).toString(16) ).slice(-4);      }      return "\\u" + res.join("\\u");  }  


二 java后端将unicode转为中文

public String convertUnicodeToChinese(String utfString){      StringBuilder sb = new StringBuilder();      int i = -1;      int pos = 0;            while((i=utfString.indexOf("\\u", pos)) != -1){          sb.append(utfString.substring(pos, i));          if(i+5 < utfString.length()){              pos = i+6;              sb.append((char)Integer.parseInt(utfString.substring(i+2, i+6), 16));          }      }            return sb.toString();  }  


三 解析

1 unicode是16进制,和中文汉字有着意义对应的关系:

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。随着计算机工作能力的增强,Unicode也在面世以来的十多年里得到普及。 
目前的用于实用的 Unicode 版本对应于 UCS-2,使用16位的编码空间。也就是每个字符占用2个字节。
utf-8长度是1-6个字节,第一个字节的高位1的数目指明了这个utf-8的字符使用的byte数目,在UTF-8编码集中,每个汉字使用 3个字符表示
 2 charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。
 3 toString(16)数字以16进制显示

4 slice(-4)返回最后四位数字

5 java中把unicode转为汉字是一个逆向过程。

6 至于其中的转换规则我还不太懂,请大佬告诉我!

原创粉丝点击