TECHBLOGスキルブログ

Eclipse:ワークスペースのエンコード変更で出来ること

2014.11.21

1.Eclipseでファイルのエンコードを変更する

ファイルの種類でエンコードが異なる環境に遭遇しました。

  • JavaファイルはMS932。
  • XMLファイルは、UTF-8。

お約束でJavaファイルのエンコードに合わせて、ワークスペースのテキスト・ファイルのエンコードをMS932に設定し、
コンテンツ・タイプの「ファイルの関連付け」からXMLのデフォルト・エンコードをUTF-8へ。
これで、ファイルのエンコードの使い分けができる訳ですが・・・。
Javaのエンコードだって同じ様にすればいいはずですが、あえてワークスペースのエンコードを変えるのは何故でしょうか。

 

2.実験

ちょっとした実験をしてみました。

2-1.コマンドプロンプトで試す

今では滅多にやることはないですが、例えばWindows環境でUTF-8で保存したソースファイルをコンパイルするには、

javac -encoding UTF-8 ソースファイル名

と、エンコード名を指定しないといけないですね。 厳密にいうと、日本語が含まれていなければ、指定しなくてもコンパイル可能です。

日本語を含んでいると

エラー:この文字は、エンコーディングMS932にマップできません

と出ます。要は、JavaコンパイラがMS932だと思ってソースファイルを処理していて、MS932に存在しない文字が出てきてエラーとなった訳です。

実行環境のデフォルトエンコーディングを調べるにはSystemクラスのgetPropertyメソッドをつかってファイルエンコードを取得出来ます。

System.getProperty("file.encoding")

実際に動かして確認するために、とりあえず標準出力に出してみましょう。

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

上記ソースをS-JISとUTF-8それぞれの文字コードで保存して、プログラムをコマンドプロンプトからコンパイル・実行すると、どちらも文字コードに依存することなく

MS932

と表示されます。

試しに、Windows環境でS-JIS・UTF-8で作成したプログラムをコンパイルして出来上がったそれぞれのclassファイルをLinux上で実行すると、どちらも

UTF-8

と表示されました。
このことから、file.encodingが正しく実行環境のデフォルトのファイル・エンコードをとっているのがわかります。

 

2-2.Eclipseで試す。

さて、同じプログラムをEclipseでコンパイル・実行するとどうなるか?

まずは、ワークスペースのテキスト・ファイルのエンコードをMs932に設定しコンパイル・実行すると、

MS932

と表示されます。コマンドプロンプトで実行した場合と同じ結果。予想通りです。

次に、ワークスペースのテキスト・ファイルのエンコードをUTF-8に設定しコンパイル・実行します。

こちらの方が皆さんにお馴染みかと思いますが、エンコード名を意識せずコンパイル出来ます。

実行をすると・・・、

UTF-8

と表示されました。

コマンドプロンプトを使用した場合とは挙動が異なります。

先の「処理系のデフォルトのファイル・エンコードが表示された」という結果を踏まえると、

Eclipseはワークスペースのデフォルト・エンコードを変える事により、内部の処理系の

デフォルト・エンコードを変化させているようです。

 

3.Eclipseのワークスペースのエンコードを変更すると 、実行環境をエミュレート出来る

2の実験で見た様に、Eclipseでエンコードを変更すると、内部での挙動が変わります。
実際にデプロイする環境のエンコードに合わせて、Eclipseでエンコード設定をしておけば開発の段階から実環境と同じエンコードで実行確認が行えるので、エンコードに依存するバグは格段に減ります。
IDEを使っていると普段は意識せずに、文字エンコードを設定していますが開発環境にできるだけ依存せず、開発ができるように配慮されているわけですね。


              

OTHER CONTENTSその他のコンテンツ

UNITRUST会社を知る

  • 私たちについて

  • 企業情報

SERVICE事業内容

  • システム開発

  • 自社サービス

CONTACT
お問い合わせ

あなたの「想い」に挑戦します。

どうぞお気軽にお問い合わせください。

受付時間:平日9:00〜18:00 日・祝日・弊社指定休業日は除く

お問い合わせ