上下文:Windows 10,cmd.exe,javac 9.0.1。
我有unicode编码的源代码。如果我运行javac -encoding UTF-8 ...
并且出现错误,我就无法正确显示源代码。
正如你在图片中看到的那样,cli可以很好地打印unicode字符。
答案 0 :(得分:3)
看来javac没有使用终端的字符编码。
您可以使用以下标志指定JVM的字符编码:
java -Dfile.encoding=UTF-8 ...
(或任何编码)
Javac只是Java程序的一个薄包装器。您可以使用-J
标志将参数直接传递给其JVM。所以:
javac -J-Dfile.encoding=UTF-8 ...
答案 1 :(得分:0)
您可以通过运行
了解当前(默认)编码System.getProperty("file.encoding")
您可以使用此属性更改默认编码。
对于Windows,通常是 - cp1252
,
长篇故事,从IBM KB排队:
在内部,Java虚拟机(JVM)始终使用数据进行操作 在Unicode中。但是,传入或传出JVM的所有数据都在 与file.encoding属性匹配的格式。数据读入JVM 从file.encoding转换为Unicode并将数据发送出去 JVM从Unicode转换为file.encoding。