sun.nio.cs.map
形式
sun.nio.cs.map=Windows-31J/Shift_JIS
説明
エンコーディング名shift_jis,csshiftjis,ms_kanji,x-sjisをMS932と同等とするかどうかを指定します。
なお,JDK17以降の場合は,このプロパティを使用できません。
文字エンコーディングの別名であるshift_jis,csshiftjis,ms_kanji,x-sjisは,JDK1.4.0ではMS932の別名でしたが,JDK1.4.2以降ではSJISの別名に変更になりました。今までMS932の別名としてshift_jis,csshiftjis,ms_kanji,x-sjisを使用していたプログラムをそのままこのバージョンで実行すると文字化けすることがあります。
shift_jis,csshiftjis,ms_kanji,x-sjisを以前のバージョンと同じく,MS932の別名として実行させるためには,sun.nio.cs.mapプロパティにWindows-31J/Shift_JISを指定してください。
(例)
import java.io.*; class encode_Shift_JIS { public static void main( String arg[] ) { try { String string_data = "−①〜"; byte[] data = string_data.getBytes(); InputStreamReader isr = new InputStreamReader( new ByteArrayInputStream( data ), "shift_jis"); char[] read_data = new char[6]; isr.read( read_data, 0, 6 ); System.out.println(new String(read_data)); } catch ( Exception e ) { e.printStackTrace(); } } }
JDK1.4.0では,shift_jisはMS932の別名であったため,上記のプログラムは文字化けしませんでしたが,JDK1.4.2のバージョンで実行すると次のように文字化けします。
java encode_Shift_JIS ??@?
文字化けを回避するためには,sun.nio.cs.mapプロパティにWindows-31J/Shift_JISを指定して実行してください。
指定例
J2EEサーバで設定する場合はusrconf.cfgファイルに次の指定をしてください。
add.jvm.arg=-Dsun.nio.cs.map=Windows-31J/Shift_JIS
J2EEサーバなど各環境でのusrconf.cfgファイルの記載方法の詳細については「2.2.2 usrconf.cfg(J2EEサーバ用オプション定義ファイル)」を参照してください。