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 のコードポイント
次の 表2 は、Unicode のコードポイントは同一だが、MS932/Cp943C への変換で異なるコードポイントへ変換される文字の一覧です。
表2 Unicode → MS932/Cp943C で変換先が異なるコードポイント
※MS932 では、NEC特殊文字に変換され、Cp943C では、IBM拡張文字に変換されます。
■JIS X 0208-1983 で追加された文字に変換されるコードポイント
NEC特殊文字、NEC選定IBM拡張文字、IBM拡張文字で定義され、後に JIS X 0208-1983 で 2 区に追加になった文字は、JIS X 0208 の 2 区のコードポイントに変換されます。
表3 は、その一覧です。
表3 JIS文字に変換されるコードポイント
■MS932/Cp943C と SJIS の相違点
MS932 もしくは Cp943C コンバーターは Unicode との対応付けで、表4 の赤字で示したコードポイントが、SJIS コンバーターで変換した場合と異なります。
EUC_JP や ISO02202JP コンバーターは、SJIS コンバーターと同じ Unicode のコードポイントを用いていますので、932/Cp943C との相互変換の際には注意が必要となります。
■重複符号化されている文字
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
※間違いや不明な点がありましたらご指摘ください。よろしくお願いいたします。
2012年9月12日水曜日
Java の MS932, Cp943C, SJIS の違い
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿