第1バイト0123456789ABCDEF
0????????????????
1????????????????
2?!"#$%&'()*+,-./
30123456789:;<=>?
4@ABCDEFGHIJKLMNO
5PQRSTUVWXYZ[\]^_
6`abcdefghijklmno
7pqrstuvwxyz{|}??
8
9
A。「」、・ヲァィゥェォャュョッ
Bーアイウエオカキクケコサシスセソ
Cタチツテトナニヌネノハヒフヘホマ
Dミムメモヤユヨラリルレロワン゙゚
E
F
第2バイト0123456789ABCDEF
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
ASCII制御文字
ASCIIと同一の文字
ASCIIと異なる文字
半角カナ
2バイト文字の第1バイト
2バイト文字の第2バイト(区番号が奇数の場合)
2バイト文字の第2バイト(区番号が偶数の場合)
未使用
Shift_JISでは空き領域や未使用であった13区(874016 - 879E16)、89 - 92区(ED4016 - EEFC16)、115 - 119区(FA4016 - FC9E16)に合計845文字を追加。ただし同じ文字が互換性のため重複して含まれており実質447文字の追加である。また、95 - 114区(F04016 - F9FC16)も利用者定義領域(外字領域)となっている。 CP932が、現在の「Windows-31J」の形として完成に至るまでには複雑な経緯がある。 1982年(JIS X 0208-1983策定の前年)、JIS C 6226(JIS X 0208)を複雑にシフトさせた文字符号化方式としてShift_JISが誕生した。この符号化方式(を利用した拡張符号化文字集合)は、マイクロソフトによりMS-DOSにおける標準日本語コードとして採用され、「コードページ 932 (CP932)」という管理番号を与えられた。 しかし、マイクロソフトは、MS-DOSにおける唯一の日本語用コードページである「CP932」を、OEMメーカーの自由に任せていた。そのため、NECのPC-9800シリーズ、IBMのPS/55 シリーズ、富士通のFMRシリーズなどは全て、MS-DOSを搭載し文字符号化方式もShift_JISを採用しているコンピュータであるにもかかわらず、登録されている文字集合がバラバラだった。 以下、代表的な2つの実装を解説する。 1983年、IBMは、日本語処理に重点を置いたデスクトップコンピュータ「マルチステーション5550」を発売する際、利用する符号化文字集合を以下のように定めた。 こうしてできたDBCS-PCは1990年発売のDOS/Vにも引き継がれることとなる。 一方NECは、1983年に PC-9800シリーズの漢字処理オプション提供を開始した。特に、MS-DOSおよびCP/M-86搭載機における漢字ROMに収容する文字集合を以下のように定めた。 マイクロソフトは1993年、Windows 3.1の日本語版を出すにあたり、「CP932の誕生と発展」節で述べたように多様化した「CP932」の仕様をOEMメーカーの自由に任せるという方針を撤回した。日本のパーソナルコンピュータ市場で、特に大きなシェアを持つ上記2社の統合コードをWindowsにおける日本語標準コードとし、また、これをIANAに「Windows-31J」という名で登録した。IANA登録名の「Windows-31J」とは、読んで字のごとく、「Windows3.1 Japanese」を意味している。IBMはマイクロソフトによる「CP932」の統合を受けて、「Windows-31J」と各文字のコードポイントまで同一にした「CP943」を策定し、同社のOSであるOS/2、AIX、DBMSであるDB2などに搭載している。 統合の概要は以下のとおりである。 上記の統合以後は、「CP932」と言えば、マイクロソフトの技術文書以外でも、一般的に「Windows-31J」を指すようになった。しかし、統合前の文字セットが全く利用されなくなったというわけではない。例として、Javaでは、「CP932」がIBMの「CP932」を指し、「MS932」が「Windows-31J」を指す。JDK 1.4.1以降では「MS932」の代わりに「Windows-31J」というキーワードでも「Windows-31J」文字セットを指定できるようになっている。 前節で触れたように、「Windows-31J」はNECとIBMのそれぞれのコードを統合して(互換性を維持する形で)作られた経緯があるため文字の重複があり、大まかに言えば「NEC選定IBM拡張文字」と「IBM拡張文字」がほぼまるごと重複している。漢字部分についていえば、すべての漢字がきっかり2つずつ登録されている。 以下、拡張文字を(非符号化)文字集合として詳しく見ると、まずNEC選定IBM拡張は漢字360文字と小文字のローマ数字.mw-parser-output .jis2004font{font-family:"源ノ角ゴシック JP Normal","源ノ角ゴシック JP","Source Han Sans Normal","Source Han Sans","NotoSansJP-DemiLight","Noto Sans CJK JP DemiLight","ヒラギノ角ゴ ProN W3","ヒラギノ角ゴ ProN","Hiragino Kaku Gothic ProN","メイリオ",Meiryo,"新ゴ Pr6N R","A-OTF 新ゴ Pr6N R","小塚ゴシック Pr6N M","IPAexゴシック","Takaoゴシック","XANO明朝U32","XANO明朝","和田研中丸ゴシック2004絵文字","和田研中丸ゴシック2004ARIB","和田研中丸ゴシック2004P4","和田研細丸ゴシック2004絵文字","和田研細丸ゴシック2004ARIB","和田研細丸ゴシック2004P4","和田研細丸ゴシックProN",YOzFont04,"IPA Pゴシック","Yu Gothic UI","Meiryo UI","MS Pゴシック";font-feature-settings:"jp04"1}「@」‐「I」、および「¬」「U」「V」「W」で構成されるが、これらはすべてIBM拡張に含まれる。IBM拡張はこのNEC選定IBM拡張に、大文字のローマ数字「T」‐「]」と「梶v「av「пv「∵」の計14文字を加えたものである。そしてこの差分の14文字はすべてNEC特殊文字にも含まれており、NEC特殊文字はこの14文字と、IBM拡張・NEC選定IBM拡張のいずれにも含まれない69文字で構成される。したがってNEC選定IBM拡張文字とNEC特殊文字を合わせると、過不足のない拡張文字の集合の全体になる。また、これらのうちでJIS X 0208:1990と重複するのは非漢字のみであり、それは3重複である「¬」「∵」の2文字と、NEC特殊文字との2重複である「≒」「≡」「∫」「√」「⊥」「∠」「∩」「∪」の8文字である。なお、JIS X 0208:1990の持つこれら10文字の重複はすべて、JIS X 0208:1983の段階で追加された文字である。 Windows-31Jが符号化の対象とする文字集合IBM拡張文字(388文字) @ABCDEFGHIUVW
歴史
CP932 の誕生と発展
IBM
Shift_JISをベースとする。
JIS C 6226が規定する94区 × 94点の領域に拡張文字追加を行なわない。
95 - 114区をユーザ外字領域とする。
115 - 119区にJIS C 6226に非登録のDBCS-Host[1]文字を登録することで、DBCS-Hostの文字セット全体を表現する。
2バイト文字部分だけの符号化文字集合の名称をDBCS-PCとし、コードページ番号[2]として「301」を割り当てる。
1バイト・2バイト文字全体の符号化文字集合のコードページ番号として「932」を割り当てる。
NEC PC-9800
Shift_JISをベースとする。
JIPS[3]の9 - 13区の特殊文字領域をそのままの区点番号で配置。
JIS C 6226-1978 非漢字・第一水準漢字・第二水準漢字はそのままの字形で、そのままの区点番号に配置。
IBM のメインフレームの「IBM 漢字 (DBCS-Host)」の中でJIS C 6226に登録の無い漢字をIBMのDBCS-PCと同様の並びで89 - 92区に配置[4]。DBCS-PCと違い、115 - 119区ではなく、GL表現も可能なように追加文字全てを 94区内に全て配置した。
OEMコードページの統合
マイクロソフトによるIBM & NEC統合の概要
ベースとなる符号化文字集合としてJIS X 0208-1990を採用。
NECが9 - 13区に登録していた特殊文字の内、13区のものだけを継承。この 13区登録の 83文字のことを「NEC特殊文字」と命名。
NECが89 - 92区に登録していた漢字と非漢字は全て継承。このエリアの374文字のことを「NEC選定IBM拡張文字」と命名。
IBMが115 - 119区に登録していた漢字と非漢字も全て継承。このエリアの388文字のことを「IBM拡張文字」と命名。
Windows-31J に重複登録されたコード
表
話
編
歴
NEC選定IBM拡張文字(374文字)NEC特殊文字(83文字)
373文字
\]^_`abcdefghijklmnopqrstuvwxyz{|}~淫戒期釧厚匙囚嘱穿凧諦日琵放愈簾傅哄奧將ヒ曉檄滯。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラ晴ルレロワン゙゚朗磅糶脣蕣褝踰鋺顫鴾@ABCDEFGHIJKLMNOPQRSTUVW?YZ[\]猪_`abcdefghijklmnopqrst益vwxyz{|礼神祥&漲靖精棋屑口冊収埴箭痩H乳眉方油練傴哈奬廐戔暾?。「」、・ヲァィ諸ェォャュョッーアイウ逸オカ都クケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚瓔磊糺脯蕘襠踴鍄阯イ飯飼館@ABCDEFGH鶴JK13文字