【问题标题】:javac does not output unicode on command linejavac 不在命令行上输出 unicode
【发布时间】:2017-12-22 15:23:30
【问题描述】:

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

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

如图所示,cli 可以很好地打印 unicode 字符。

【问题讨论】:

  • 我想知道投票结束的原因是什么?这对我来说似乎是一个合理的问题。
  • 如果你修复它告诉你的丢失的; 怎么办?编译后的代码是否按预期工作?
  • 这里似乎是一个有趣的社区;-)
  • @AndyTurner 这与问题有什么关系?问题不在于代码是否工作,而在于 javac 输出问题。
  • @eis 如果 javac 生成预期的类文件,它只是一个显示工件。否则,javac 无法正确解释代码。

标签: java windows unicode cmd


【解决方案1】:

看来 javac 没有使用您终端的字符编码。

您可以使用标志指定 JVM 的字符编码:

java -Dfile.encoding=UTF-8 ...

(或任何编码)

Javac 只是 Java 程序的一个薄包装器。您可以使用-J 标志直接将参数传递给它的JVM。所以:

javac -J-Dfile.encoding=UTF-8 ...

【讨论】:

  • 我爱你!像魅力一样工作。
【解决方案2】:

您可以通过运行了解当前(默认)编码

System.getProperty("file.encoding")

您可以使用此属性更改默认编码。

对于 Windows,通常是 - cp1252,

长篇大论,从IBM KB排队:

在内部,Java 虚拟机 (JVM) 始终使用数据进行操作 在 Unicode 中。但是,所有传入或传出 JVM 的数据都在 与 file.encoding 属性匹配的格式。数据读入 JVM 从 file.encoding 转换为 Unicode 并从 JVM 由 Unicode 转换为 file.encoding。

【讨论】:

  • javac 不是我的程序。 cp 似乎是正确的。正如您在图片中看到的,我实际上可以显示 unicode 字符 - 甚至是晦涩的字符。
  • 试试javac -J-Dfile.encoding=UTF-8 ...,也许?
  • @herr.kaste 呵呵,幸运的发现。还是把它写成答案。
猜你喜欢
  • 1970-01-01
  • 2015-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多