Mac OS X Lion で javac コマンドが文字化けするのを直す

Mac OS X のターミナルで、javac を実行すると、デフォルトの文字エンコーディングがなぜか、Shift JIS になっているせいで文字化けしてしまう。

対処方法を求めてググると、以下の記事がヒットした。

(Mac OS X Tips::Snow Leopard)ターミナルでのJava文字化け対策 - jitsu102の日記

上の記事では、aliasを使った方法で、

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

というふうに、rcファイルに定義しておくことで対処していたが、もうちょっといい方法があるんじゃないかなーと思い、探したら、Stack Overflow に自分が期待していたのに近い回答があった。

環境変数 JAVA_TOOL_OPTIONSVMを起動するときに渡すオプションを記述しておけば、いちいちjavaのツールを実行するときにオプションを渡さなくても良いらしい。

ということで、自分の場合以下のような記述を、.bashrc に記述することで対処した。

export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8

ところで、なんで Shift JIS なんでしょうね? 最初っから UTF-8 で良い気がするのに... Windows を基準にしているため?

注意

JAVA_TOOL_OPTIONS では、前述のaliasの例のように'-J'は不要。理由は、'-J'はjavacのオプションで、「Java VM に渡すオプションを指定するためのオプション」であったが、JAVA_TOOL_OPTIONは、それ自体が Java VM に渡すオプションであるため。