Java 文字のエンコード

Java™ プログラムは、他のフォーマットのデータを変換して、アプリケーションが多様な国際文字セットの情報を転送および使用できるようにします。

Java 仮想マシン (JVM) は、内部では常に Unicode 形式でデータを扱います。 ただし、JVM が外部とやり取りするすべてのデータは、file.encoding プロパティーと一致したフォーマットになっています。 JVM が読み取るデータは file.encoding から Unicode に変換され、JVM から送信されるデータは Unicode から file.encoding へ変換されます。

Java プログラムのデータ・ファイルは、統合ファイル・システム (IFS) に保管されています。 統合ファイル・システムの中のファイルは、コード化文字セット識別コード (CCSID) でタグ付けされており、これによってファイル内に含まれているデータの文字エンコード方式を識別します。

Java プログラムが読み取るデータは、file.encoding と一致する文字エンコード方式であることが要求されます。 Java プログラムがファイルに書き込むデータは、file.encoding と一致する文字エンコード方式で書き込まれます。 このことは、javac コマンドが処理する Java のソース言語ファイル (.java ファイル) や、java.net パッケージを使用して伝送制御プロトコル/インターネット・プロトコル (TCP/IP) ソケットを介して送受信されるデータにも当てはまります。

System.in、System.out、および System.err で読み書きされるデータの処理方法は、stdin、stdout、および stderr に割り当てられた他のソースで読み書きされるデータの処理方法とは異なります。 stdin、stdout、stderr は通常、IBM® i サーバーの EBCDIC 装置に接続されているので、データは JVM によって通常の file.encoding の文字コード方式から IBM i ジョブの CCSID と一致する CCSID に変換されます。System.in、System.out、System.err のいずれかがファイルやソケットにリダイレクトされ、stdin、stdout、stderr のいずれにも送信されない場合、この付加的な変換は実行されず、データは file.encoding と一致するエンコード方式のままになります。

Java プログラムで、file.encoding 以外のエンコード方式を使用してデータを読み書きする必要がある場合は、プログラムで Java の IO クラス (java.io.InputStreamReader、java.io.FIleReader、 java.io.OutputStreamReader、および java.io.FileWriter) を使用することができます。 Java クラスを使用すれば、JVM が現在使用しているデフォルトの file.encoding プロパティーよりも優先される file.encoding 値を指定することができます。

DB2® データベースとの間で受け渡されるデータは JDBC API を介して IBM i データベースの CCSID との間で双方向に変換されます。

Java ネイティブ・インターフェースを介して他のプログラムとの間で転送されるデータは、変換されません。