デフォルトエンコーディングの確認

広告

プログラムを作成し保存した後、プログラムをコンパイルします。この時、ソースファイルに日本語が含まれている場合には文字コードについて考慮する必要があります。

Javaでは使用している環境に応じてデフォルトのエンコーディングが決まっており、特に指定しない場合には環境毎のデフォルトエンコーディングを使ってプログラムが保存されていると考えてコンパイルを行います。

ご自分の環境のデフォルトエンコーディングを調べるには次の簡単なプログラムを実行して下さい。

JSample1_1.java

import java.util.Properties;
import java.util.Enumeration;

class JSample1_1{
  public static void main(String args[]){
    System.out.println(System.getProperty("file.encoding"));
  }
}

実際にコンパイルして実行してみると次のように表示されます。

p1-1

Windows環境では「MS932」と表示されます。つまり特に指定しなかった場合、Windows環境ではプログラムのソースファイルはMS932の文字コードを使って記述されていると考えます。

よってWindows環境であればソースファイルを保存する時に文字コードでShift_JISを指定しておけば、ソースファイルに日本語が含まれていても正常に処理されます。

MS932とShift_JISは非常に似ている文字コードですが実際には別々の文字コードです。ただWindows環境の多くのテキストエディタでは保存する時に「MS932」は選択肢にありません。またテキストエディタでShift_JIS(に類する文字コード)を指定して保存すると、実際にはMS932で保存している場合もあります。

もしソースファイルをUTF-8など別の文字コードで保存したい場合には、コンパイルの時にソースファイルで使用している文字コードを教えてあげる必要があります。次のページで文字コードを指定する方法を確認します。

サンプル

では実際に試してみます。

JSample1_2.java

class JSample1_2{
  public static void main(String args[]){
    System.out.println("今日もいいお天気ですね");
  }
}

上記を文字コードにShit_JISを指定して保存します。そして次のようにコンパイルを行います。

javac JSample1_2.java

p1-2

エラーも無くコンパイルできました。では実行してみます。

p1-3

問題なく実行できました。

ではもう一つ試してみます。

JSample1_3.java

class JSample1_3{
  public static void main(String args[]){
    System.out.println("今日もいいお天気ですね");
  }
}

先ほどとまったく同じプログラムです。上記を文字コードにUTF-8を指定して保存します。そして次のようにコンパイルを行います。

javac JSample1_3.java

p1-4

警告が2つ表示されました。今回は警告が出ただけでコンパイルまで完了していますが、日本語が使われている状況によってはエラーとなりコンパイルが失敗する場合もあります。では実行もしてみます。

p1-5

このようにソースコードの文字コードと、コンパイル時にJavaが認識している文字コードが一致していないと正常に動作させることはできません。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)