作者:Mr-o蛋挞 | 来源:互联网 | 2023-10-12 03:50
这是一个最最简单的HelloWorld程序,但是如果你在Windows英文版情况下就会出乱码。//文件名保存UTF-8publicclassHelloWorl
这是一个最最简单的Hello World 程序,但是如果你在Windows 英文版情况下就会出乱码。
//文件名保存UTF-8
public class HelloWorld{
public static void main(String[] args){
System.out.println("欢迎大家学习Java");
}
}
C:\>java HelloWorld
欢�大家学习Java
这个很简单吧,主要是console的 code page 不对,还有没有中文字体对吧。 
 
     
 
 
C:\>chcp 65001
Active code page: 65001
C:\>java HelloWorld
欢迎大家学习Java
妥了。 
再来做个实验,这个又是何故呢?
 
C:\>javac -encoding utf-8 HelloWorld.java
C:\>java HelloWorld
??????Java
C:\>java -Dfile.encoding=utf-8 HelloWorld
欢迎大家学习Java
再来一段
//测试
import java.nio.charset.Charset;
import java.io.InputStreamReader;
import java.io.FileInputStream;
public class PrintCharSets {
public static void main(String[] args) throws Exception {System.out.println("file.encoding=" + System.getProperty("file.encoding"));System.out.println("Charset.defaultCharset=" + Charset.defaultCharset());System.out.println("InputStreamReader.getEncoding=" + new InputStreamReader(new FileInputStream("./PrintCharSets.java")).getEncoding());
System.out.println("InputStreamReader.getEncoding=" + new InputStreamReader(new FileInputStream("./PrintCharSets.class")).getEncoding());
System.out.println("欢迎大家学习Java");
}
}
 
C:\>javac PrintCharSets.java
C:\>java PrintCharSets
file.encoding=Cp1252
Charset.defaultCharset=windows-1252
InputStreamReader.getEncoding=Cp1252
InputStreamReader.getEncoding=Cp1252
欢迎大家学习Java
C:\>java -Dfile.encoding=utf-8 PrintCharSets
file.encoding=utf-8
Charset.defaultCharset=UTF-8
InputStreamReader.getEncoding=UTF8
InputStreamReader.getEncoding=UTF8
欢�大家学习Java
C:\>javac -encoding utf-8 PrintCharSets.java
C:\>java PrintCharSets
file.encoding=Cp1252
Charset.defaultCharset=windows-1252
InputStreamReader.getEncoding=Cp1252
InputStreamReader.getEncoding=Cp1252
??????Java
C:\>java -Dfile.encoding=utf-8 PrintCharSets
file.encoding=utf-8
Charset.defaultCharset=UTF-8
InputStreamReader.getEncoding=UTF8
InputStreamReader.getEncoding=UTF8
欢迎大家学习Java
 好吧。就先不去想了。等过一阵,再来看,继续学习Java。
 
 
reference: 
https://www.zhihu.com/question/348139746/answer/838176150