No.055 | 投稿日時: | 2003/04/17(木) 20:22 <親記事> |
投稿者: | えびはら |
初めまして、えびはらと申します。
異種システム間のデータ連携に関連して、文字コードのことを色々調べております。
さて、早速の質問で恐縮ですが、シフトJIS系のエンコーディングには色々とありますが、
それぞれがどのように異なるのかについてご教示いただきたいと思っています。
以下は私が調査した結果なのですが、もしこの中に誤解があればご指摘いただけないでしょうか。
よろしくお願いします。
--
各エンコーディングがサポートする文字集合は以下の通り。
Shift_JIS
- JIS X 0201.1976
- JIS X 0208.1983 or 1990
Cp932
- JIS X 0201.1976
- JIS X 0208.1983
- IBM拡張文字
(※ http://www.unet.univie.ac.at/aix/aixprggd/genprogc/codeset_over.htm より)
Cp943
Cp943C
MS932
- JIS X 0201.1976
- JIS X 0208.1990
- NEC特殊文字
- NEC選定IBM拡張文字
- IBM拡張文字
これらのエンコーディングにおいては各キャラクタのコードポイントは同じなので、
コード変換は不要である。
例えばMS932のテキストはそのままCp943C(Cp943)として取り扱うことができる。
ただしCp943は他の2つに比べ、以下のコードポイントも持つ。
・0x80: Cent sign(Cp943)
・0xA0: Pound sterling sign(Cp943)
・0xFD: Not sign(Cp943)
・0xFE: Backslash(Cp943)
・0xFF: Tilde(Cp943)
また、一部の文字のUnicodeへのマッピングポイントが異なる。
MS932とCp943C
"−", "〜", "‖", "―", "〓"
(※ http://www-6.ibm.com/jp/software/websphere/developer/wsv35wslib/pdf/was35_psj5_1.pdf より)
Cp943とCp943C
・0x5C("\") → U007F(Cp943C, Back Slash), U00A5(Cp943, Yen Sign)
・0x7E("~") → U007E(Cp943C, Tilde), U203E(Cp943, Overline)
(※ http://www.os2ss.com/news/misc/java114.readme より)
そのためMS932のテキストをUnicodeに変換し、その後Cp943Cに変換すると、元のテキストとは
異なるコードになってしまう文字がある。