String s ="一";
byte[] b =s.getBytes();
System.out.println(b[0]);
System.out.println(b.length+"-"+s.getBytes().length);
以上代码分别把UTF-8和GBK两份,分别运行以上程序,居然得到两种结果。。。
求原因。。。
String s ="一";
byte[] b =s.getBytes();
System.out.println(b[0]);
System.out.println(b.length+"-"+s.getBytes().length);
以上代码分别把UTF-8和GBK两份,分别运行以上程序,居然得到两种结果。。。
求原因。。。
正常啊。当你用UTF-8保存代码的时候,s 的内容是UTF-8里面对应的”一“,占3个byte。当你用GBK保存代码的时候, s 的内容是GBK里面对应的“一”,占两个 bytes。所以结果当然不一样了。
关键是 UTF-8以 3 个byte 来储存数据, GBK以 2 个 byte 来储存数据。