読者です 読者をやめる 読者になる 読者になる

ほげほげ(仮)

仮死状態

Macのeclipseでコマンドライン引数が文字化け

Mac Java


あまりコマンドライン引数に日本語を渡すことはないと思いますが、一応メモとして残しておきます。

現象

次のようなコマンドライン引数を出力するだけのソース

public class Test {
    public static void main(String[] args) {
        System.out.println("★" + args[0] + "★");
    }
}


コマンドライン引数に日本語を渡して実行してみます。
f:id:STAR_ZERO:20100902230809p:image


結果は下のように空文字となって表示されていません。
f:id:STAR_ZERO:20100902231017p:image


ちなみに英語だと、正しく表示されます。
f:id:STAR_ZERO:20100902231018p:image



対策 ※下に記載している注意事項を読んでから行ってください。

色々と調べた結果、eclipse.iniを編集すればうまくいくようです。


ターミナルより次のコマンドを実行します。

vi /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse.ini


viエディタで最終行に次の1行を追加します。

-Dfile.encoding=UTF-8

※心配な人はeclipse.iniをコピーしておいたほうがいいかもしれません。


eclipseを再起動します。おそらく、この手順通り試している人はソース上の「★」が化けていると思いますので、修正します。


修正したら、もう一度実行してみます。
f:id:STAR_ZERO:20100902232236p:image


今度はうまく出力されました。



注意事項

日本語が入っている既存のソースに適用する場合は、この対応をするとすべて文字化けを起こすと思われます。
注意して行うようにしてください。
もし、これをやって戻したい場合は「-Dfile.encoding=UTF-8」をeclipse.iniから削除すれば戻ると思います。
(ソースを修正してしまっている場合は文字化けが戻らない可能性があります。)


また、イマイチ理解できないところもありますし、これが正しい対処法かは微妙です。
これを行う場合は自己責任でお願いします。