SyntaxHighlighter

2012/06/30

MacOSXでJava系コマンドが文字化けする

MacOSXでJavaのコマンドを使うと、日本語でメッセージが出力されているが文字化けしてなんだがよくわかりません。
    $ keytool -exportcert -alias androiddebugkey -keystore .android/debug.keystore -list -v
    ?L?[?X?g?A?̃p?X???[?h????͂??Ă???????:
    ?ʖ?: androiddebugkey
    ?쐬??: 2012/04/09
    ?G???g???^?C?v: PrivateKeyEntry
    ?ؖ??A???̒???: 1
    ?ؖ???[1]:
    ???L??: CN=Android Debug, O=Android, C=US
    ???s??: CN=Android Debug, O=Android, C=US
    ?V???A???ԍ?: 4f82d91a
    ?L?????Ԃ̊J?n??: Mon Apr 09 21:41:55 JST 2012 ?I????: Wed Apr 02 21:41:55 JST 2042
    ?ؖ????̃t?B???K?[?v?????g:
    MD5: 7C:62:8A:F2:84:50:FA:B2:A7:08:E8:93:50:8A:6C:71
    SHA1: 33:92:51:5A:09:C5:72:5B:60:F7:9B:05:4F:5C:76:11:8B:6A:18:6D
    ?????A???S???Y????: SHA1withRSA
    ?o?[?W????: 3

原因は、Javaの出力文字コードがSJISになっているが、MacのターミナルはUTF-8表示なため、反故が発生しているようです。頼みますよ、Appleさん。何のためにApple経由でJavaの特製バージョンを配布しているんですか…。

とりあえずnkfなどにリダイレクト(2>&1|nkf --utf8)をしてみると表示は正常に変わりますが、入力プロンプトが出力されなかったりするので、上記のようなインタラクティブなコマンドには不向きです。

どうやら環境変数_JAVA_OPTIONSを定義してあげると動作するようで、
    $ _JAVA_OPTIONS='-Dfile.encoding=UTF-8' keytool -exportcert -alias androiddebugkey -keystore .android/debug.keystore -list -v
    Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
    キーストアのパスワードを入力してください:
    別名: androiddebugkey
    作成日: 2012/04/09
    エントリタイプ: PrivateKeyEntry
    証明連鎖の長さ: 1
    証明書[1]:
    所有者: CN=Android Debug, O=Android, C=US
    発行者: CN=Android Debug, O=Android, C=US
    シリアル番号: 4f82d91a
    有効期間の開始日: Mon Apr 09 21:41:55 JST 2012 終了日: Wed Apr 02 21:41:55 JST 2042
    証明書のフィンガープリント:
    MD5: 7C:62:8A:F2:84:50:FA:B2:A7:08:E8:93:50:8A:6C:71
    SHA1: 33:92:5A:5E:09:C5:72:5B:60:F7:9B:05:4F:5C:76:11:8B:6A:18:6D
    署名アルゴリズム名: SHA1withRSA
    バージョン: 3
となりました。

0 件のコメント: