よく似た文字エンコーディングとして、Shift_JISとWindows-31Jがありますが、JDK/JRE 1.4.1から、Shift_JISエンコーディングの扱いが変わりました。
JDK/JRE 1.4.0以前: 以下のエンコーディング名を指定した場合、MS932コンバーターが使用される
JDK/JRE 1.4.1以降: 以下のエンコーディング名を指定した場合、SJISコンバーターが使用される
対象のエンコーディング名
shift_jis
ms_kanji
x-sjis
csshiftjis
この変更はWebアプリケーションにおいて、Javaを必要とするコンテンツのMIMEタグを、IANA別名指定に沿って正しく解釈するアプリケーションが増えてきたことが背景にあります。
このため、JDK/JRE 1.4.0以前のアプリケーションでエンコーディング名に上記の別名を指定すると、JDK/JRE 1.4.1以降で文字化けが発生することがあります。JDK/JRE 1.4.0以前と同様に表示させるためには、Windows-31Jを指定してください。
なお、Windowsにおけるデフォルトのファイルエンコーディングは、Windows-31Jのまま変更はありませんので、影響がありません。