java文件编码问题
本Markdown编辑器使用[StackEdit][6]修改而来:
- Eclipse默认使用GBK编码,GBK编码英文占用一个字节,中文占用两个字节
- utf-8编码英文占用一个字节,中文占用三个字节
- java默认使用UTF-16BE编码,中文和英文都占两个字节
当你的字节序列是某种编码格式时,这时候想把字节序列变成字符串,也需要这种编码方式,否则会出现乱码。
String s = "哈哈哈ABC";
byte[] bytes1 = s.getBytes();
byte[] bytes2 = s.getBytes("GBK");
byte[] bytes3 = s.getBytes("UTF-8");
byte[] bytes4 = s.getBytes("UTF-16BE");
String str1 = new String(bytes4, "utf-16be");
str1可以正常输出。如果将
String str1 = new String(bytes4, "utf-16be")
修改为String str1 = new String(bytes4);
则str1的输出会是乱码。