日期:2014-05-20  浏览次数:20728 次

如何将这个码转成中文?? 急!!!
String   tmp   =   "我 ";     //   我

这个   "我 "   字,经常某种编码后,,变成了上面那个字符串,,,
这中间,我不知道,别人是怎么编码的..我现在要把它还原成中文!!!

------解决方案--------------------
中文 在 UTF-8 编码中就是三个字节的

你可以用

byte[] bb = "我 ".getBytes( "UTF-8 ");
System.out.println(new String(bb, "UTF-8 "));
for(int i = 0 ; i <3 ;i++) {

System.out.println(bb[i]+256);
}

还原
------解决方案--------------------
UTF-8 是将unicode编码 根据码值大小 转换成1到4个字节 后输出
你运行下面的程序就得到上面的字节

char c = (char)0x6211 ;

b1 = (byte) ((c > > 12 & 0x0F | 0xE0)+256);
b2 = (byte) ((c > > 6 & 0x3F | 0x80)+256);
b3 = (byte) ((c > > 0 & 0x3F | 0x80)+256);

System.out.println(b1+256);
System.out.println(b2+256);
System.out.println(b3+256);
------解决方案--------------------
UTF-8是变长编码,是按照下面规则来编码的

UCS-2编码(16进制) UTF-8字节流(二进制)
0000 – 007F 0xxxxxxx
0080 – 07FF 110xxxxx10xxxxxx
0800 – FFFF 1110xxxx10xxxxxx10xxxxxx

对于“我”这个字符为 0x6211 正好是上面的第三种情况,把0x6211写成二进制,按照上面的模板依次填入x代表的位置,就出来这三个数字了

建议查看编码有关的文章