OS X:javac的终端输出乱码

3

我把电脑设置成了日语(嘿,这是很好的语言练习),一切都不错...除了 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 を使用します

除了Java自身输出的所有信息都是英文(这没问题),其他一切(使用UTF8)都可以在命令行下正常工作:我可以输入日语文件名,Tab补全也正常工作,vi可以编辑UTF-8文件等。

这是我的环境的相关部分:

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

从外观上看,javac 没有正确地获取编码,而 java 根本没有获取语言。我也尝试过 -Dfile.encoding=utf8,但是什么都没发生,至少从 Google 上来看,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

@Don Werve:笑 :) +1 你好 Don,最近怎么样?你写道:“我已经将我的(OS X)电脑设置成了日语”,但实际上并不是这样吧?你只是在特定的用户账户中设置了日语,因为从这个角度来看,OS X与Windows有很大的不同(在Windows中,如果你想要一个日语版的Windows,你需要日语安装光盘,至少以前是这样的[我曾经在日语环境下安装过Windows 98 [!!!])。在OS X中,据我所知,你可以随意更改操作系统的语言。虽然这对于像我这样的OS X / Java / 日语迷来说并没有什么帮助,但这是一个有趣的问题。 - SyntaxT3rr0r
@WizardOfOdds:OS X没有针对不同市场的不同本地化版本,因此当您安装新操作系统时,可以从任何可用语言中选择默认语言。所以,是的,我的电脑默认语言确实是日语。 - Don Werve
据我所知,它比 OS X 更好,这也是我评论的重点:即使在安装后,您也可以随时切换语言(如果我没有弄错的话)。如果您想尝试中文,可以...然后再切换回来。这并不意味着需要重新安装。 - SyntaxT3rr0r
@WizardOfOdds:哦,完全同意;我的女朋友和我的商业伙伴偶尔会使用我的笔记本电脑,他们都更喜欢使用英语,但在Windows上不行。 - Don Werve
2个回答

1

这是在日语环境下,javac在OS X上的一个众所周知的故障。 我自己进行了一些谷歌搜索,但没有找到根本性的解决方法。目前,我使用的临时解决方案是

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"

0
你在终端中启用了哪些字符编码?我猜测它不允许javac使用的编码。请在“首选项>编码”下查看。

我已经检查了“日语”下的所有编码,以及所有的UTF-*编码。 - Don Werve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接