OS X: вывод терминала из javac искажен - PullRequest
3 голосов
/ 15 марта 2010

Мой компьютер настроен на японский язык (эй, это хорошая языковая практика), и все в порядке и отлично ... кроме 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 を使用します

Все остальное работает нормально (с UTF8) из командной строки; Я могу напечатать имена файлов на японском языке, табуляция работает нормально, vi может редактировать файлы UTF-8 и т. Д. Хотя java сам выкладывает все свои сообщения на английском языке (что нормально).

Вот соответствующие биты моего окружения:

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

Исходя из того, как это выглядит, javac неправильно распознает кодировку, а java вообще не воспринимает язык. Я тоже пробовал -Dfile.encoding=utf8, но это не так, и документации по локализации цепочки инструментов JVM практически не существует, по крайней мере, от Google.

Добавление:

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 ]

1 голос
/ 16 марта 2010

Это известный глюк javac на OS X в японской среде.Я сделал немного поисков Google сам, и я не нашел фундаментального лечения.На данный момент я использую временное решение

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 голосов
/ 15 марта 2010

Какие кодировки символов вы включили в Терминале?Я предполагаю, что это не позволяет кодировку, которую использует javac.Смотрите в Предпочтения> Кодировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...