「Java/基礎/反復処理」の版間の差分

削除された内容 追加された内容
→‎for文による反復処理: 文字コードに関する補足を追加
32 行
こうした、いわゆる“2バイト文字”を使う際、文字コードの問題が起こる場合もあります。
 
たとえば、WindowsやMac OS Xなどの環境で、このソースコードを「UTF-8」という文字コードで保存したとします。この場合でも、コンパイルは成功するかもしれません。しかし、実行結果は正しく表示されないと思いせん
これは、WindowsやMac OS Xなどの環境下では、ソースコードが「Shift-JIS」という文字コードで書かれているという前提で動いているからです(Windowsの場合、厳密には「MS932」という文字コードです)。
 
デフォルトソースコードを規定値以外の文字コードでソースコードを保存した場合使用した文字コードを指定してコンパイル時に指定するようにします。たとえば次の例は「UTF-8」を指定している場合です。
 
$ <b>javac -encoding UTF-8 Main.java</b>
 
システムによっては、問題はコンパイルだけとは限りません。
とえば、Mac OS X 10.4の標準のターミナルはUTF-8をサポートしています。
ですからもちろん日本語の表示も可能なのですが、実際には1つ問題があります。
というのも、Javaが規定しているMac OS Xのデフォルトの文字コードがShift-JISだからです。
JavaプログラムはターミナルにShift-JISで出力してしまいます。
JavaプログラムはターミナルはそれをUTFにShift-8JIS解釈しますから、文字化けが発生出力してしまいますが、
JavaプログラムはターミナルにShiftはそれをUTF-JIS8出力解釈してしまいまうのです。
 
これ表示防ぐ正しくするためには、次のようにしてプログラムを実行するようにします。
 
$ <b>java -Dfile.encoding=UTF-8 Main</b>