2007年5月21日月曜日

XcodeでJavaの実行結果が文字化けすることが解決したよ.

XcodeでSystem.out.println()で,標準出力に日本語を出力した場合に文字化けする問題のこと.

たとえば,プロジェクトHelloWorldをJava>Java Toolでつくって,ソースを

public class HelloWorld {
public static void main (String args[]) {
System.out.println("こんにちは,世界!");
}
}

という風にしたとき,実行結果が

[Session started at 2007-05-21 13:24:22 +0900.]
????????\201L??\201\213??????\201\361????????

java はステータス 0 で終了しました。

となってしまうのだ.

これは,コンパイラにソースを欧米(Mac OS Roman)というエンコーディングでコンパイルさせているのことと,実行時の標準出力のエンコーディングがShift_JISになっているので起きる問題.(ちなみに,Xcodeの文字コードの実行結果表示のエンコーディングはUTF-8.)

まず,コンパイル時のエンコーディングをUTF-8にする.これは,プロジェクトウィンドウのターゲット>HelloWorldをダブルクリックし,ターゲット:HelloWorldウィンドウの設定>シンプルビュー>Javaコンパイラ設定>ソースファイルのエンコーディングを「Unicode(UTF-8)」にするだけだ.



次に,実行時のエンコーディングをUTF-8にする.これは,プロジェクトウィンドウの実行可能ファイル>javaをダブルクリックし,"実行可能ファイル"Java""の情報ウィンドウの引数>起動時に渡される引数に,+をクリックして,「-Dfile.encoding=UTF-8」を追加し,「-jar "HelloWorld.jar" 」より上にする.(上にしないと,うまく動作しないので注意.)



これで,クリーニングしてから(ソースコードを編集していない場合,リビルドされないから.)ビルドし,実行する.そうすると実行結果が

[Session started at 2007-05-21 13:52:25 +0900.]
こんにちは,世界!

java はステータス 0 で終了しました。

となる.

文字化けすることに悩んでいる人は,これをやってみるといいと思う.

ちなみに,Ant-basedのプロジェクトの場合は,build.xmlをいじれば大丈夫だと思うけど試していない.

0 件のコメント: