public static void main(String[] args) throws Exception {
String str = "的";
int utf8Lenth = str.getBytes("utf-8").length;
int gbkLength = str.getBytes("gbk").length;
int utf16Length = str.getBytes("utf-16").length;
System.out.println(str);
System.out.println(str.length());
System.out.println("============================");
System.out.println(utf8Lenth);
System.out.println("============================");
System.out.println(gbkLength);
System.out.println("============================");
System.out.println(utf16Length);
}
正常情况,长度分别为1,3,2,4
但是不知道怎么弄的,出现了乱码,输出长度为2,6,3,6,输出str的时候为乱码
用javac直接编译的时候,报错:编码GBK的不可映射字符
用javac -encoding utf-8可正常编译并且运行结果正常
原因应该是编码不一致造成的
1. 看一下系统编码
//查看当前系统的字符编码方式
System.out.println(Charset.defaultCharset().name());
//查看当前系统的编码方式
System.out.println(System.getProperty("file.encoding"));
2. 查看idea设置
File --> Settings --> Editor --> File Encodings
File --> Other Settings --> Default Settings --> Editor --> File Encodings
3. 查看.idea/encodings.xml中是否设置了某个类特殊的编码
4. 文件编码格式
Idea不能智能的将UTF-8+BOM转化为普通UTF-8
右下角,将编码格式转化为GBK,选择Convert,然后再将编码格式转化为UTF-8,恢复正常