単にEUC、シフトJISといっても、文字エンコーディングによって、対応している文字に差分があります。
しいては、同じ文字エンコーディング名であっても、対応ベンダによって差分があったりもします。
下記の表に、Javaにおける文字エンコーディング毎の対応文字についてまとめてみます。
(文字エンコーディング毎のUnicodeマッピングの違いについては後ほど。「文字エンコーディング毎のUnicodeマッピングの違いについて。」を参照。)
確認したバージョンは、Sun J2SE 1.4.2になります。
文字セット | 内容 | 文字エンコーディング | ||||
Shift_JIS, SJIS | Windows-31J, MS932 | EUC-JP | EUCJP-OPEN | UTF-8, UTF-16 | ||
JIS X 0201 (JISローマ字) | 半角英数記号。 いわゆるASCIIコード。 | ○ | ○ | ○ | ○ | ○ |
JIS X 0201 (JIS片仮名) | 半角カナ。 | ○ | ○ | ○ | ○ | ○ |
JIS X 0208 (基本漢字) | 全角の記号、英数、ひらがな、カタカナ、漢字(第1、第2水準)。 | ○ | ○ | ○ | ○ | ○ |
JIS X 0212 (補助漢字) | 使用頻度の低い文字で構成される第3水準の漢字、および非漢字(ギリシャ文字、記号など) | × | × | ○ | ○ | ○ |
NEC特殊文字 | 丸数字①や、ローマ数字Ⅰ、カッコ株㈱など。 | × | ○ | × | ○ | ○ |
NEC選定IBM拡張文字 | その他JIS X 0208に含まれない文字がここで追加。 | × | ○ | × | ○ | ○ |
上記表への補足事項です。
- 「JIS X 0212」と「NEC選定IBM拡張文字」は、一部重複する字形があります。
そのため、「NEC選定IBM拡張文字」を未収録(×)と上記の表でなっていても、「JIS X 0212」と重複する字形ならば、「JIS X 0212」を収録(○)していることで、その字形に対して対応できている可能性があるのでご注意ください。 - 「Shift_JIS」は、J2SE1.4.1より前は「MS932」にエイリアスされていたので、1.4.1より前の場合は、「MS932」と同じ欄を見てください。
- 「EUCJP-OPEN」が使用可能なのは、J2SE1.4.2以降になります。
EUCJP-OPENは、1.4.2で新しく追加されたので、あまり知られていないような気がしますが、EUCでWindows-31Jと同じ字形を使用できるので、使いどころは結構あると思います。
文字セット、文字エンコーディングについて
「文字セット」、「文字エンコーディング」については、同一のものとして使われていることもありますが、ここでは下記のような意味合いで使用しています。
- 文字セット(character set)
文字の集合体。JIS X 0201、JIS X 0208など。 - 文字エンコーディング(character encoding)
文字の表現方式(というか符号化方式)。字形('a')→文字コード(0x61)への変換方式。
EUC-JP、Shift_JISなど。
上記は混乱を招く場合があると思いますので、なるべく分けて使った方が良いのではと思ってます。