OS X:javac的终端输出是乱码

时间:2010-03-15 02:16:22

标签: java macos localization utf-8 javac

我的计算机是用日语设置的(嘿,这是很好的语言练习),一切都很好,花花公子......除了javac。它向控制台显示本地化的错误消息,但它们是Shift-JIS,而不是UTF8:

$ javac this-file-doesnt-exist.java
javac: ?t?@?C??????????܂???: this-file-doesnt-exist.java
?g????: javac <options> <source files>
?g?p?\?ȃI?v?V?????̃??X?g?ɂ??ẮA-help ???g?p???܂

如果我通过nkf -w管道输出,它是可读的,但这不是一个很好的解决方案:

$ javac this-file-doesnt-exist.java 2>&1 | nkf -w
javac: ファイルが見つかりません: this-file-doesnt-exist.java
使い方: javac <options> <source files>
使用可能なオプションのリストについては、-help を使用します

Everything 在命令行中运行正常(使用UTF8);我可以用日语输入文件名,tab-completion工作正常,vi可以编辑UTF-8文件等。虽然java本身用英语吐出所有的消息(很好)。

以下是我环境的相关内容:

LC_CTYPE=UTF-8
LANG=ja_JP.UTF-8

从它的外观来看,javac没有正确地获取编码,而java根本没有提取语言。我也尝试了-Dfile.encoding=utf8,但这确实是虚无...,JVM工具链的本地化文档几乎不存在,至少来自谷歌。

附录:

Macports OpenJDK6有更好的行为:

$ /opt/local//share/java/openjdk6_bootstrap/bin/javac this-file-doesnt-exist.java 
javac: file not found: this-file-doesnt-exist.java
Usage: javac <options> <source files>
use -help for a list of possible options

2 个答案:

答案 0 :(得分:1)

这是日本环境中OS X上一个众所周知的javac故障。 我自己做过一些谷歌搜索,但我找不到根本的治疗方法。目前,我正在使用的临时解决方案是

javac -J-Dfile.encoding=utf8

以日语UTF-8编码的错误消息。请注意,它不是-D,而是-J-D。如果您想要英文错误消息,请使用

 LC_ALL=C javac -J-Dfile.encoding=utf8

如果您愿意,可以随时将它们变成别名:

 alias javac="LC_ALL=C javac -J-Dfile.encoding=utf8"

答案 1 :(得分:0)

您在终端中启用了哪些字符编码?我猜它不允许javac使用的编码。在首选项&gt;下查看;编码。