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代表的位置,就出来这三个数字了
建议查看编码有关的文章