CP932
CP932は、日本語のシフトJISのコードページの一つです。
恐らく日本人に最も馴染みの深いコードページと思われますが、同じコードページ番号でありながら、仕様が異なるものが多数あります。
日本のMS-DOS時代にはコードページは馴染みが薄かったので、PC-98などは取り敢えずCP932などの名前は不要であろうとして名前を設定してありました。
しかし今回、IBM関係で同名衝突の問題があったので、さらに細分することにしました。
① MS932
Windows-31J とも呼ばれるWindows 3.1以降の実装です。
新JISに、NECとIBMの拡張漢字を融合した、Windowsユーザーに馴染み深い文字集合です。
MS932では、0x80、0xa0、0xfd、0xfe、0xffに割り当てがあるようなので、Windowsの変換表に合わせました。
0x80以外は外字です。
MS932、CP932、CP932/WINなどで指定します。
② IBM-932 (DOS/V)
実物は未確認ながら、JIS C 6226 + IBM拡張漢字、とされているので、そのように実装(従来通り)。
但し指定名については若干仕様変更があるかもしれません。
この場合のDOSは、恐らくIBM PC DOS/Vだと思われます。MS-DOS/Vがどうなっているのかは更に未確認です。
CP932/IBM、CP932/DOSV、IBM-932などで指定します。
③ IBM-932 (OS/2)
今回の問題を引き起こした原因です。
この文字集合はOS/2で使われており、コードページ932なのだそうです。
「JIS C 6226の文字並び」にJIS X 0208-1983の追加文字を含む、とされていますが、確認した範囲では1990で追加された2文字も存在しました。ので、1990対応で実装しました。
必要があれば、1983までの変換、1990対応の変換の二種類を実装可能ですが、今のところは特に分けていません。
処理の内部的には、JIS X 0208で文字を扱っていますから、入力または出力時、JIS C 6226への変換を行なうことになります。その従来のJIS C 6226用新旧変換表を拡張し、2行追加されました。
具体的には、一般的な新旧入れ換えに加えて、次の入れ換えを行なうことになります。一つ目はIBM拡張文字との入れ換えになります。
0x9452, 0x3937,
0x7426, 0x5f66
CP932/OS2、IBM-932/OS2などで指定します。
CCS名を略した時に採用される文字集合をまとめると、次の通り。
CP932 → CP932/WIN
IBM-932 → IBM-932/DOSV
OS/2は、/OS2 のように付けて表現する方法にします。
恐らく日本人に最も馴染みの深いコードページと思われますが、同じコードページ番号でありながら、仕様が異なるものが多数あります。
日本のMS-DOS時代にはコードページは馴染みが薄かったので、PC-98などは取り敢えずCP932などの名前は不要であろうとして名前を設定してありました。
しかし今回、IBM関係で同名衝突の問題があったので、さらに細分することにしました。
① MS932
Windows-31J とも呼ばれるWindows 3.1以降の実装です。
新JISに、NECとIBMの拡張漢字を融合した、Windowsユーザーに馴染み深い文字集合です。
MS932では、0x80、0xa0、0xfd、0xfe、0xffに割り当てがあるようなので、Windowsの変換表に合わせました。
0x80以外は外字です。
MS932、CP932、CP932/WINなどで指定します。
② IBM-932 (DOS/V)
実物は未確認ながら、JIS C 6226 + IBM拡張漢字、とされているので、そのように実装(従来通り)。
但し指定名については若干仕様変更があるかもしれません。
この場合のDOSは、恐らくIBM PC DOS/Vだと思われます。MS-DOS/Vがどうなっているのかは更に未確認です。
CP932/IBM、CP932/DOSV、IBM-932などで指定します。
③ IBM-932 (OS/2)
今回の問題を引き起こした原因です。
この文字集合はOS/2で使われており、コードページ932なのだそうです。
「JIS C 6226の文字並び」にJIS X 0208-1983の追加文字を含む、とされていますが、確認した範囲では1990で追加された2文字も存在しました。ので、1990対応で実装しました。
必要があれば、1983までの変換、1990対応の変換の二種類を実装可能ですが、今のところは特に分けていません。
処理の内部的には、JIS X 0208で文字を扱っていますから、入力または出力時、JIS C 6226への変換を行なうことになります。その従来のJIS C 6226用新旧変換表を拡張し、2行追加されました。
具体的には、一般的な新旧入れ換えに加えて、次の入れ換えを行なうことになります。一つ目はIBM拡張文字との入れ換えになります。
0x9452, 0x3937,
0x7426, 0x5f66
CP932/OS2、IBM-932/OS2などで指定します。
CCS名を略した時に採用される文字集合をまとめると、次の通り。
CP932 → CP932/WIN
IBM-932 → IBM-932/DOSV
OS/2は、/OS2 のように付けて表現する方法にします。