Java中乱码问题解决
问题是这样的,我使用sublime编辑器编写java代码,所使用的编码是UTF-8编码。代码非常简单,如下:
public class IntSty {
public static void main (String [] args) {
String str = "你好中国";
int len = str.length();
System.out.println(len);
System.out.println(str);
}
}
输出的结果让我很意外,len的值为6,而str的值是乱码的“浣犲ソ涓浗”。
然后,我又试着使用系统默认的ANSI编码来看看会出现啥情况,发现使用ANSI编码编写的文件没有出现乱码,能够正确显示字符串长度及字符串。
查阅了一番资料后,终于搞明白了。原来,java在编译的时候,如果没有加-encoding选项的话,就会使用系统当前的默认编码来读取源文件,然后再将其转换为utf-8编码,接着再进行编译。
所以,乱码的根本问题不是你的源文件所采用的是哪种编码,你只要在编译时正确告诉机器你所使用的是什么编码,就不会产生乱码。
现在重新编译,加入编码的选项,再试试看
javac -encoding utf-8 IntSty.java
java IntSty
4
你好中国
这样,使用utf-8编码文件也不会产生乱码了。