2012年9月12日水曜日

Java の MS932, Cp943C, SJIS の違い

Java※ の MS932, Cp943C, SJIS の変換で異なる点、および注意を要する点をまとめてみました。

※調査したバージョン:Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_02-b06)

■概要

MS932 と Cp943C の両者は、Windows-31J の文字セットを扱えます。

主な違いは、Unicode への変換で一部異なるコードポイントに変換される事と、NEC特殊文字とIBM拡張文字の両方で定義されている文字を、Unicode から MS932/Cp943C に変換する際に、どちらのコードポイントかという点が異なります。

MS932/Cp943C は Unicode との対応付けが 一部の JIS X 0208 の文字に関して、SJIS と異なり、EUC_JP や ISO2022JP へ変換出来ない文字があるので注意が必要となります。

■MS932 と Cp943C で異なる Unicode コードポイント

MS932 と Cp943C では、Unicode に変換した時に 表1 に示した違いがあります。

表1 MS932 と Cp943C で異なる Unicode のコードポイント
表1

次の 表2 は、Unicode のコードポイントは同一だが、MS932/Cp943C への変換で異なるコードポイントへ変換される文字の一覧です。

表2 Unicode → MS932/Cp943C で変換先が異なるコードポイント
表2
※MS932 では、NEC特殊文字に変換され、Cp943C では、IBM拡張文字に変換されます。

■JIS X 0208-1983 で追加された文字に変換されるコードポイント

NEC特殊文字、NEC選定IBM拡張文字、IBM拡張文字で定義され、後に JIS X 0208-1983 で 2 区に追加になった文字は、JIS X 0208 の 2 区のコードポイントに変換されます。
表3 は、その一覧です。

表3 JIS文字に変換されるコードポイント
表3

■MS932/Cp943C と SJIS の相違点

MS932 もしくは Cp943C コンバーターは Unicode との対応付けで、表4 の赤字で示したコードポイントが、SJIS コンバーターで変換した場合と異なります。

EUC_JP や ISO02202JP コンバーターは、SJIS コンバーターと同じ Unicode のコードポイントを用いていますので、932/Cp943C との相互変換の際には注意が必要となります。

表4

■重複符号化されている文字

MS932/Cp943C とも、Unicode への変換で、重複符号化されている文字は、多対1 の変換となっています。
Unicode から MS932/Cp943C への変換は、表2 の文字以外は、MS932 と Cp943C は同一の変換となっています。

MS932 の変換は、次のページをご覧下さい。

Windows-31J の重複符号化文字と Unicode (当サイト・コンテンツ)
http://www2d.biglobe.ne.jp/~msyk/charcode/cp932/uni2sjis.html

■ユーザー定義文字

MS932/Cp943C では、95〜114区 (F040〜F9FC) がユーザー定義文字の領域となっていています。

両方のコンバーターとも Unicode の私用領域の U+E000〜U+E757 と対応付けされています。

■参照

WebSphere V3.5 発表ワークショップ資料
> 第3回 「プログラミング・モデル(JSP、Servlet)」 > 文字コード
http://www-6.ibm.com/jp/software/websphere/developer/wsv35wslib/pdf/was35_psj5_1.pdf

Windows-31J情報 (当サイト・コンテンツ)
http://www2d.biglobe.ne.jp/~msyk/charcode/cp932/index.html

文字コード掲示板 過去ログ
http://www2d.biglobe.ne.jp/~msyk/cgi-bin/charcode/bbs.cgi?c=gr&n=55

※間違いや不明な点がありましたらご指摘ください。よろしくお願いいたします。

0 件のコメント:

コメントを投稿