黑马程序员技术交流社区
标题:
学习字符编码解码过程中的一个神奇发现
[打印本页]
作者:
贾浩田
时间:
2014-8-8 14:02
标题:
学习字符编码解码过程中的一个神奇发现
public static void main(String[] args) throws Exception
{
String str = "田";
byte[] buf = str.getBytes("UTF-8"); //编码
System.out.println(Arrays.toString(buf));
String s1 = new String(buf, "GBK"); //解码错误
System.out.println(s1);
byte[] b1 = s1.getBytes("GBK"); //对错误的解码结果进行编码
System.out.println(Arrays.toString(b1));
String s2 = new String(b1, "UTF-8"); //再重新按照正确的解码规则进行解码
System.out.println(s2);
}
为什么我最后显示的不是'田',而是乱码
作者:
黑马黄武先
时间:
2014-8-8 14:15
菜鸟看不懂,帮顶一个
作者:
叼哥
时间:
2014-8-8 14:28
简单来说,比如有0111 1010 1111 0101这两个字节在UTF-8里面有其代表的字符,但是在GBK里面,GBK他不认识这两个,GBK就用同一个字节如 1111 1111来表示不认识的字符并存储,GBK出现了乱码,然后当你用utf-8再来解析的时候,出现的自然也是乱码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2