文字コード掲示板


記事表示


No.056投稿日時:2003/04/18(金) 07:31    <↑親記事:No.055>
投稿者:森山 将之

Re: シフトJIS系のエンコーディングの違い

はじめまして、えびはらさん。

コードページとして CpXXX (IBM のコードページ) と MSXXX (Windows のコードページ) の 2種類を使い分けているという所を見ると、Java の事でしょうか?

以前、Windowsのコードページ 932 (Windows-31J) 絡みで Java のエンコーディングも少しだけ調べてみた事があるという程度の知識しかなく、Cp932(IBM-932)、Cp943、Cp943C に関しては、よく分かっていないのですが、えびはらさんの調査結果に関して誤解されているというところはないのではないかと思います。(私自身、IBM のコードページについては勉強不足で確かなことは言えませんが。)

Cp932 に関しては、Java の用法に従うと IBM のコードページ 932 のようですが、Java 以外では、cp932 を Windows のコードページ 932 (Java の MS932) として扱っているソフトもあるので、注意を要するといったくらいでしょうか。

> また、一部の文字のUnicodeへのマッピングポイントが異なる。
> MS932とCp943C
> "−", "〜", "&#8214;", "―", "〓"
> (※ http://www-6.ibm.com/jp/software/websphere/developer/wsv35wslib/pdf/was35_psj5_1.pdf より)

一部文字化けしていますね。
左から順番に次のようになっていると思われます。

 "−" [817C] 01区61点
 "〜" [8160] 01区33点
 "&#8214;" (U2016)→"‖" [8161] 01区34点
 "―" [815C] 01区29点
 "〓" [FA55] 115区23点 IBM拡張文字 (いわゆる機種依存文字なので、この掲示板ではゲタ記号"〓" に変換しています。)

他の注意点としては次のような事があります。

SJIS と MS932 では、次の文字について Unicode との対応関係が異なります。
 "〜" [8160]
 "‖" [8161]
 "−" [817C]
 "¢" [8191]
 "£" [8192]
 "¬" [81CA]

SJIS と Cp943C では、次の文字について Unicode との対応関係が異なります。
 "―" [815C]
 "¢" [8191]
 "£" [8192]
 "¬" [81CA]

EUC_JP や ISO2022JP は、Unicode との対応に関しては、SJIS と同じなので、EUC_JP と MS932/Cp943C、ISO2022JP と MS932/Cp943C も同様の問題があります。

※Java の SJIS, EUC_JP, ISO2022JP は、ftp://ftp.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0208.TXT のマッピングを用いているようです。("―" 01区29点 が JIS X 0208:1997 の解釈と異なる点に注意。)

あまり参考にならなかったかもしれません。
以前調べた時に次のページを参考にしましたので紹介いたします。

Java Character Encodings
http://www.ingrid.org/java/i18n/encoding/
 Javaの日本語関連コンバータにおけるマッピングの違い
 http://www.ingrid.org/java/i18n/encoding/ja-conv.html

サポートされているエンコーディング (Java 2 Platform, Standard Editionv 1.3)
http://java.sun.com/j2se/1.3/ja/docs/ja/guide/intl/encoding.doc.html

インストール関連情報 Hints&Tips (コードページ 943 の簡単な説明あり)
http://www-6.ibm.com/jp/pspjinfo/os2/hints/128.html

従来の文字コードとUnicodeの対応に関する諸問題
http://euc.jp/i18n/ucsnote.ja.html

変換表がベンダーによって異なる
http://www.debian.or.jp/~kubota/unicode-symbols-map2.html
※この中で登場する CP932 は、Windows Code Page 932 (Java で は MS932) の事になります。

文字コードについてのメモ
http://www.asahi-net.or.jp/~wq6k-yn/code/
※「JIS漢字とUCSの文字の対応について」で "―" 01区29点 についての指摘あり。

IANA > Character Sets
http://www.iana.org/assignments/character-sets
※Shift_JIS, Windows-31J (MS932)

Windows-31J (Windows Code Page 932) に関しては、私が調べて分かったことをまとめたページがあります。

Windows-31J 情報
http://www2d.biglobe.ne.jp/~msyk/charcode/cp932/index.html

実を言うと、eucJP-ms の説明は、ちょっと自信がありません。
また、Windows の API での Unicode → シフトJIS (Windows-31J) の変換に関しては、次のページに解説されている「WideCharToMultiByte の特殊処理」というのもあったりしますが、その説明は省略してあります。

JIS記号の UCS BMP へのマッピングの問題および MS漢字とシフトJISの違い
http://www.asahi-net.or.jp/~ez3k-msym/charsets/jis2ucs.htm


Script : Sylpheed 1.24
Modified by MORIYAMA Masayuki