OS X:javac のターミナル出力が文字化けする
-
20-09-2019 - |
質問
私はコンピューターを日本語でセットアップしました (これは良い言語練習になります)、すべてが順調で順調です...を除外する javac
. 。ローカライズされたエラー メッセージがコンソールに表示されますが、UTF8 ではなく Shift-JIS で表示されます。
$ 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
解決
これは日本語環境で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"
他のヒント
ターミナルでどの文字エンコーディングを有効にしましたか?javac が使用しているエンコードが許可されていないと思います。[設定] > [エンコーディング] を確認します。