javac不在命令行上输出unicode

时间:2017-12-22 15:23:31

标签: java windows unicode cmd

上下文:Windows 10,cmd.exe,javac 9.0.1。

我有unicode编码的源代码。如果我运行javac -encoding UTF-8 ...并且出现错误,我就无法正确显示源代码。

enter image description here

正如你在图片中看到的那样,cli可以很好地打印unicode字符。

2 个答案:

答案 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。