2007年8月2日木曜日

Javaの文字化け

Mac OS XでJavaを利用すると文字化けする。

信じられない話しであるがMac OS X 10.4.10の"javac"も"java"もその日本語出力はShift JISである。なぜこのような時代錯誤が発生したのか詳細は不明であるが、これでは実用に問題がある。

結果から言えば以下のように~/.bash_profilに追記すれば一時的に回避できることが分かる。

alias javac='javac -encoding UTF-8'
alias java='java -Dfile.encoding=UTF-8'

"-encoding"はmanに解説があるが設定する変数の定義がなく、どこを参照するべきかも書かれていない。これはIANAという規格を前提にしているらしいが、ここで定義しているUFT-8だけでなくutf-8でもUTF8でも機能する・・・いやはや。

http://www.iana.org/assignments/character-sets

"-Dfile.encoding=utf-8"に関してはmanとSun Microsystemsのサイトに以下のような記述がある。

manより
-Dproperty=value
Sets a system property value.

Sun Microsystemsのサイトより
-Dproperty=value
システムプロパティの値を設定します。value が、スペースを含む文字列である場合は、文字列を次のように二重引用符で囲む必要があります。
java -Dfoo="some string" SomeClass

ここで言うシステムプロパティとはJavaが実行されるときに、システムから得た情報を格納するSystemクラスのプロパティーとキーの組み合わせのことらしい。今回のfile.encodeingというプロパティはファイルのエンコードを指定している。

0 件のコメント: