日本語を扱える文字コードにはメジャーなものでUTF-8, Shift_JIS, EUC-JP, UTF-16, ISO-2022-JP(JIS)などがあります。 近年UTF-8を使う傾向が強まっていますが、今でもShift_JISは多く使われています。 ところがこの「Shift_JIS」には多くの種類があります。
Shift_JIS系の1バイト文字は、以下のようになっています。00~1F, 7Fは制御文字、20~7Eはアスキー文字です (SPACEはアスキー文字としても制御文字としても扱われることがあります)。 ここはUTF-8でもEUC-JPでもJISでも共通です。
1バイト文字として使っていないのは、表中の黄色の部分の80~9FとE0~FFの範囲です。 この範囲のコードに2バイト文字の1バイト目を割り当てたのがShift_JISです。 ですので、Shift_JIS系の文字コードの違いを知りたければこの部分だけに着目すればいい事になります。
下位4ビット | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |||
上 位 4 ビ ッ ト | 00 | NUL | SOH | STX | ETX | EOT | ENQ | ACK | BEL | BS | HT | LF | VT | FF | CR | SO | SI | |
10 | DLE | DC1 | DC2 | DC3 | DC4 | NAK | SYN | ETB | CAN | EM | SUB | ESC | FS | GS | RS | US | ||
20 | SP | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / | ||
30 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? | ||
40 | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | ||
50 | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ | ||
60 | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | ||
70 | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | DEL | ||
80 | ||||||||||||||||||
90 | ||||||||||||||||||
A0 | 。 | 「 | 」 | 、 | ・ | ヲ | ァ | ィ | ゥ | ェ | ォ | ャ | ュ | ョ | ッ | |||
B0 | ー | ア | イ | ウ | エ | オ | カ | キ | ク | ケ | コ | サ | シ | ス | セ | ソ | ||
C0 | タ | チ | ツ | テ | ト | ナ | ニ | ヌ | ネ | ノ | ハ | ヒ | フ | ヘ | ホ | マ | ||
D0 | ミ | ム | メ | モ | ヤ | ユ | ヨ | ラ | リ | ル | レ | ロ | ワ | ン | ゙ | ゚ | ||
E0 | ||||||||||||||||||
F0 |
ちなみにJISの符号化文字集合でいうと、白い部分の赤文字範囲が「JIS X 0211」のC0集合の範囲の制御文字、 青文字の範囲が「JIS X 0211」以外の範囲の制御文字、白い部分の黒文字の範囲が「JIS X 0201」。 そして、黄色い部分が「JIS X 0208」およびJIS規格以外の独自拡張の領域です。
主なShift_JIS系の文字コードは大きく分けて使われているものだと3種類、使われていないものも含めると5種類あります(個人的見解)。
# | 分類 | 備考 | 呼び名・別名・派生 |
---|---|---|---|
#1 | Shift_JIS | 生のShift_JIS。しばしば使われる。「JIS X 0208:1997 付属書1 シフト符号化表現」で規定。「Shift_JIS」はIANAに登録されている | Shift_JIS, csShiftJIS, MS_Kanji, SJIS, (最初の)CP932, hift-jis, x-sjis |
#2 | NEC独自拡張Shift_JIS | 「生のShift_JIS」に、09~13区にNEC特殊文字・89~92区にNEC選定IBM拡張文字 を加えたShift_JIS。現在ではまず使われない。 | PC-9800仕様OEM コードページ932 |
#3 | IBM独自拡張Shift_JIS | 「生のShift_JIS」に、115~119区にIBM拡張文字を加えたShift_JIS。複数のバージョンがある | CP942, CP942C, CP943, CP943C x-IBM942, x-IBM942C, x-IBM943, x-IBM943C, IBMのコードページ932 |
#4 | マイクロソフト標準Shift_JIS | 「生のShift_JIS」に、NEC特殊文字の13区のみとNEC選定IBM拡張文字とIBM拡張文字を加えたShift_JIS。マイクロソフトが統合を行った。 実質的に最も多く使用されている。「Windows-31J」はIANAに登録されている | Windows-31J, csWindows31J, MS932, CP932, Microsoft コードページ 932, PC 漢字コード, PCK |
#5 | アップル独自拡張Shift_JIS | アップルが「生のShift_JIS」に、09~15区の範囲に独自に拡張したShift_JIS。 他のShift_JIS系の文字コードとの互換性は考慮されておらず、縦書き用の記号や指差し記号など独創的な文字も登録されている。 Mac OSのバージョン 7.1からバージョン 9.xまでの間で利用された。現在ではまず使われない。 | Mac OS Japanese, MacJapanese, x-Mac-Japanese, MacTEC |
ざっくりいうと、Shift_JISが、NECやIBMなどによって独自拡張され、後にマイクロソフトがメジャーなNECとIBMの拡張を一つにまとめて、それが広く使われるようになった、という感じです。
Java7では、Shift_JIS系の文字エンコーディングは以下がサポートされています。
java.nio API 用の正準名 | java.io API と java.lang API 用の正準名 | 説明 | 備考 |
---|---|---|---|
Shift_JIS | SJIS | Shift-JIS、日本語 | #1 |
windows-31j | MS932 | Windows 日本語 | #4 |
x-IBM942 | Cp942 | IBM OS/2 日本語、Cp932 のスーパーセット | #3 |
x-IBM942C | Cp942C | Cp942 の拡張機能 | #3 |
x-IBM943 | Cp943 | IBM OS/2 日本語、Cp932 および Shift-JIS のスーパーセット | #3 |
x-IBM943C | Cp943C | Cp943 の拡張機能 | #3 |
x-PCK | PCK | Solaris 版の Shift_JIS | #4とほぼ同じ。ただしユーザー定義外字は使用できない |
x-SJIS_0213 | x-SJIS_0213 | Shift_JISX0213 | #4とほぼ同じ。 ただしNEC特殊文字・NEC選定IBM拡張文字とIBM拡張文字の割り当てが若干異なる。 |
Shift_JIS系の文字一覧イメージを示します。文字コード間の差を直感的に理解しやすいように、 2バイト文字の範囲について8文字毎にピックアップしたざっくりとした一覧を作りました。
ちなみに、一覧はJavaでプログラムを作成し、Java8でコンパイル・実行しました。 そのため「Shift_JIS」「CP942C」「MS932」の一覧表は、あくまでもJava8での実行結果に過ぎず 他の環境で同一の結果を保証するものではありません。
1バイト目の下位4ビット | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |||
1 バ イ ト 目 の 上 位 4 ビ ッ ト | 80 | 01-02区:記号 | 03区:数字・ローマ字 04区:ひらがな | 05区:カタカナ 06区:ギリシャ文字 | 07区:キリル文字 08区:罫線 | 09-10区:割当て無 | 11-12区:割当て無 | 13区:NEC特殊文字 14区:割当て無 | 15区:割当て無 16区:第一水準漢字 | 17-18区:第一水準漢字 | 19-20区:第一水準漢字 | 21-22区:第一水準漢字 | 23-24区:第一水準漢字 | 25-26区:第一水準漢字 | 27-28区:第一水準漢字 | 29-30区:第一水準漢字 | ||
90 | 31-32区:第一水準漢字 | 33-34区:第一水準漢字 | 35-36区:第一水準漢字 | 37-38区:第一水準漢字 | 39-40区:第一水準漢字 | 41-42区:第一水準漢字 | 43-44区:第一水準漢字 | 45-46区:第一水準漢字 | 47区:第一水準漢字 48区:第二水準漢字 | 49-50区:第二水準漢字 | 51-52区:第二水準漢字 | 53-54区:第二水準漢字 | 55-56区:第二水準漢字 | 57-58区:第二水準漢字 | 59-60区:第二水準漢字 | 61-62区:第二水準漢字 | ||
E0 | 63-64区:第二水準漢字 | 65-66区:第二水準漢字 | 67-68区:第二水準漢字 | 69-70区:第二水準漢字 | 71-72区:第二水準漢字 | 73-74区:第二水準漢字 | 75-76区:第二水準漢字 | 77-78区:第二水準漢字 | 79-80区:第二水準漢字 | 81-82区:第二水準漢字 | 83-84区:第二水準漢字 | 85-86区:割当て無 | 87-88区:割当て無 | 89-90区:NEC選定IBM拡張文字 | 91-92区:NEC選定IBM拡張文字 | 93-94区:割当て無 | ||
F0 | 95-96区:ユーザー定義外字 | 97-98区:ユーザー定義外字 | 99-100区:ユーザー定義外字 | 101-102区:ユーザー定義外字 | 103-104区:ユーザー定義外字 | 105-106区:ユーザー定義外字 | 107-108区:ユーザー定義外字 | 109-110区:ユーザー定義外字 | 111-112区:ユーザー定義外字 | 113-114区:ユーザー定義外字 | 115-116区:IBM拡張文字 | 117-118区:IBM拡張文字 | 119区:IBM拡張文字 120区:割当て無 | 121-122区:割当て無 | 123-124区:割当て無 | 125-126区:割当て無 |
1バイト目の下位4ビット | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |||
1 バ イ ト 目 の 上 位 4 ビ ッ ト | 80 | ? ̄々~ ”}』÷∴ $§□→ ∈∧ ≒∬Å | 19A IQYh pxあおげ ずぢなひぺ もりを | ァォケスチ ドパベムヨ ヰΒΚΣ βκσ | АЗПЧЯ азоц ю│┴┣ ┷ | 唖葵芦 虻安以威畏 謂郁芋引 | 院羽臼厩荏 栄英悦園沿 艶汚旺鴎臆 穏佳科禍華 霞芽解恢 | 魁芥咳街柿 撹角岳橿活 叶釜刈勘寛 敢澗簡諌韓 癌願嬉旗 | 機稀輝宜義 吃却休朽笈 巨鋸侠卿恐 矯饗曲巾筋 金玖愚串 | 掘粂訓傾形 敬継警劇決 倹堅権肩顕 減限己糊鈷 呉瑚交効 | 后工恒更港 紘膏郊項壕 告腰頃昏魂 査座妻災菜 財崎昨鮭 | 察皐傘珊餐 刺姿支死肢 諮侍滋耳鴫 失実縞社借 錫手酒綬 | 宗秋襲醜汁 宿術駿準処 署序匠妾床 昇沼省紹証 鐘剰条醸 | |||||
90 | 拭食娠森秦 辛壬靭逗粋 瑞据摺勢晴 精逝席籍切 説占栓煽 | 繊践善噌疏 蘇叢匝操争 草遭蔵捉族 尊詑楕岱滞 隊題択諾 | 叩辿単湛蛋 檀恥遅逐宙 註著帳暢腸 頂賃鎚漬坪 亭定挺艇 | 邸滴撤店伝 塗菟度凍嶋 盗祷蕩鐙堂 萄涜栃寅豚 内楢汝虹 | 如禰捻嚢覗 派廃肺楳蝿 柏曝箱畑伐 蛤搬畔頒蛮 扉碑避枇 | 鼻菱姫氷描 鰭頻富斧譜 武葺腹物焚 丙並癖片娩 歩戊呆抱 | 法蓬鳳帽冒 防朴堀摩毎 鱒迄蔓蜜眠 椋迷綿孟木 籾冶役鑓 | 諭幽猶郵輿 揺用踊沃来 乱利裏葎硫 虜梁諒厘鱗 伶苓歴漣 | 蓮路榔蝋倭 鷲湾 丐乖于 从仟佇侑俘 倨倩會傀 | 僉僣儕儿兪 冑冪凅凰刪 剞劍劬勣匆 匣丗卻厰叮 吭呵咀咥 | 咫唏啀唸啻 喇嗔噎噫嚠 嚼囗國圷垈 垪埖塋墟壓 壟夊夸奢 | 奸姨娜婢嫣 嬋孅孰它寤 寳尨屏岑峅 嶌崑嵎嶢巉 巵幄幤廁 | 廖廩弃弭彖 徂徘忸怙怦 恊恫悛惠慍 愃愨慂慴憙 憫懆懺戉 | 戞扎抉拗拜 拮挾捶捩揶 攝攪擒舉擴 攤畋敲斷旙 杳晁晰曁 | 曄曰霸杞杼 柯柝栞梳梭 梵椈棧棹棆 楮楝槓榧槨 樅櫁橇檍 | 檗櫞蘖盜歔 殄殫毋麾汕 汾沽泛洽涓 涅淆淙渙湍 游溯溟滲 | ||
E0 | 漾潯澑濆濮 濾瀾炬烙煦 熕燔燿爲牴 犧狢猜獎獵 珥琲瑩璧 | 瓠瓸甕畊畫 疉疳痊痼瘉 瘰癢癶皖皺 盧眤睚瞎瞿 矜礪碣碾 | 磧礬祓禮秡 禀穡窗窶竏 竦笘笄筧箍 篋簑篳簟籀 籵粨糅糲 | 紂紿絮綛總 緝縣繆縲繹 辮纔罌罟羃 羣翅翳耙聒 聰肛胙脛 | 隋腥膠膵臍 臧舊艀艢艾 苣苻茴茯莢 荳菎菠菻蒭 萵蒻蓿蓼 | 蕁薊蕷藕藾 乕蚪蛉蛟蛻 蜷蝌蝣螽蟆 蟶蠡衒衵袙 裄裴褞褸 | 襦覃覬觜訌 詆誄諄諤謌 謳譏譬讓豌 貂貘貶賻齎 赳跖跼蹂 | 蹇踪躅躪軈 輊輛輾轢辷 逅逖遐遞邁 邵鄲酳醪釐 鈞鉅銜鋩 | 錙鍠鎹鏐鐐 鑄鑵閂閠闊 關陂陟險隹 雕霏霾靤靼 鞨韋頏顏 | 顱飃餘餽饒 馼駱騙騾驤 髏髦鬆鬨魏 鮑鯊鯤鰔鰄 鰲鳧鴪鵁 | 鵝鶇鷄鷙鸛 麌麪黜黴鼈 齔齪槇 | |||||||
F0 |
1バイト目の下位4ビット | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |||
1 バ イ ト 目 の 上 位 4 ビ ッ ト | 80 | ? ̄々~ ”}』÷∴ $§□→ ∈∧ ≒∬Å | 19A IQYh pxあおげ ずぢなひぺ もりを | ァォケスチ ドパベムヨ ヰΒΚΣ βκσ | АЗПЧЯ азоц ю│┴┣ ┷ | 唖葵芦 虻安以威畏 謂郁芋引 | 院羽臼厩荏 栄英悦園沿 艶汚旺鴎臆 穏佳科禍華 霞芽解恢 | 魁芥咳街柿 撹角岳橿活 叶釜刈勘寛 敢澗簡諌韓 癌願嬉旗 | 機稀輝宜義 吃却休朽笈 巨鋸侠卿恐 矯饗曲巾筋 金玖愚串 | 掘粂訓傾形 敬継警劇決 倹堅権肩顕 減限己糊鈷 呉瑚交効 | 后工恒更港 紘膏郊項壕 告腰頃昏魂 査座妻災菜 財崎昨鮭 | 察皐傘珊餐 刺姿支死肢 諮侍滋耳鴫 失実縞社借 錫手酒綬 | 宗秋襲醜汁 宿術駿準処 署序匠妾床 昇沼省紹証 鐘剰条醸 | |||||
90 | 拭食娠森秦 辛壬靭逗粋 瑞据摺勢晴 精逝席籍切 説占栓煽 | 繊践善噌疏 蘇叢匝操争 草遭蔵捉族 尊詑楕岱滞 隊題択諾 | 叩辿単湛蛋 檀恥遅逐宙 註著帳暢腸 頂賃鎚漬坪 亭定挺艇 | 邸滴撤店伝 塗菟度凍嶋 盗祷蕩鐙堂 萄涜栃寅豚 内楢汝虹 | 如禰捻嚢覗 派廃肺楳蝿 柏曝箱畑伐 蛤搬畔頒蛮 扉碑避枇 | 鼻菱姫氷描 鰭頻富斧譜 武葺腹物焚 丙並癖片娩 歩戊呆抱 | 法蓬鳳帽冒 防朴堀摩毎 鱒迄蔓蜜眠 椋迷綿孟木 籾冶役鑓 | 諭幽猶郵輿 揺用踊沃来 乱利裏葎硫 虜梁諒厘鱗 伶苓歴漣 | 蓮路榔蝋倭 鷲湾 丐乖于 从仟佇侑俘 倨倩會傀 | 僉僣儕儿兪 冑冪凅凰刪 剞劍劬勣匆 匣丗卻厰叮 吭呵咀咥 | 咫唏啀唸啻 喇嗔噎噫嚠 嚼囗國圷垈 垪埖塋墟壓 壟夊夸奢 | 奸姨娜婢嫣 嬋孅孰它寤 寳尨屏岑峅 嶌崑嵎嶢巉 巵幄幤廁 | 廖廩弃弭彖 徂徘忸怙怦 恊恫悛惠慍 愃愨慂慴憙 憫懆懺戉 | 戞扎抉拗拜 拮挾捶捩揶 攝攪擒舉擴 攤畋敲斷旙 杳晁晰曁 | 曄曰霸杞杼 柯柝栞梳梭 梵椈棧棹棆 楮楝槓榧槨 樅櫁橇檍 | 檗櫞蘖盜歔 殄殫毋麾汕 汾沽泛洽涓 涅淆淙渙湍 游溯溟滲 | ||
E0 | 漾潯澑濆濮 濾瀾炬烙煦 熕燔燿爲牴 犧狢猜獎獵 珥琲瑩璧 | 瓠瓸甕畊畫 疉疳痊痼瘉 瘰癢癶皖皺 盧眤睚瞎瞿 矜礪碣碾 | 磧礬祓禮秡 禀穡窗窶竏 竦笘笄筧箍 篋簑篳簟籀 籵粨糅糲 | 紂紿絮綛總 緝縣繆縲繹 辮纔罌罟羃 羣翅翳耙聒 聰肛胙脛 | 隋腥膠膵臍 臧舊艀艢艾 苣苻茴茯莢 荳菎菠菻蒭 萵蒻蓿蓼 | 蕁薊蕷藕藾 乕蚪蛉蛟蛻 蜷蝌蝣螽蟆 蟶蠡衒衵袙 裄裴褞褸 | 襦覃覬觜訌 詆誄諄諤謌 謳譏譬讓豌 貂貘貶賻齎 赳跖跼蹂 | 蹇踪躅躪軈 輊輛輾轢辷 逅逖遐遞邁 邵鄲酳醪釐 鈞鉅銜鋩 | 錙鍠鎹鏐鐐 鑄鑵閂閠闊 關陂陟險隹 雕霏霾靤靼 鞨韋頏顏 | 顱飃餘餽饒 馼駱騙騾驤 髏髦鬆鬨魏 鮑鯊鯤鰔鰄 鰲鳧鴪鵁 | 鵝鶇鷄鷙鸛 麌麪黜黴鼈 齔齪槇 | |||||||
F0 | | | | | | | | | | | ⅰⅸ蓜 丨侊偆兤勛 﨎垬奓甯嵓 弴惕抦昻晴 朗﨓橳汯 | 涖渧瀨凞玽 琪皂砡祥箞 罇葈﨡諟赶 鄕釥鉙鋗錡 鍗閒靍餧 | 髜鵫 |
1バイト目の下位4ビット | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |||
1 バ イ ト 目 の 上 位 4 ビ ッ ト | 80 | ? ̄々~ ”}』÷∴ $§□→ ∈∧ ≒∬Å | 19A IQYh pxあおげ ずぢなひぺ もりを | ァォケスチ ドパベムヨ ヰΒΚΣ βκσ | АЗПЧЯ азоц ю│┴┣ ┷ | ①⑨⑰Ⅴ㌔ ㍗㎝〝㊧ ≒∟ | 唖葵芦 虻安以威畏 謂郁芋引 | 院羽臼厩荏 栄英悦園沿 艶汚旺鴎臆 穏佳科禍華 霞芽解恢 | 魁芥咳街柿 撹角岳橿活 叶釜刈勘寛 敢澗簡諌韓 癌願嬉旗 | 機稀輝宜義 吃却休朽笈 巨鋸侠卿恐 矯饗曲巾筋 金玖愚串 | 掘粂訓傾形 敬継警劇決 倹堅権肩顕 減限己糊鈷 呉瑚交効 | 后工恒更港 紘膏郊項壕 告腰頃昏魂 査座妻災菜 財崎昨鮭 | 察皐傘珊餐 刺姿支死肢 諮侍滋耳鴫 失実縞社借 錫手酒綬 | 宗秋襲醜汁 宿術駿準処 署序匠妾床 昇沼省紹証 鐘剰条醸 | ||||
90 | 拭食娠森秦 辛壬靭逗粋 瑞据摺勢晴 精逝席籍切 説占栓煽 | 繊践善噌疏 蘇叢匝操争 草遭蔵捉族 尊詑楕岱滞 隊題択諾 | 叩辿単湛蛋 檀恥遅逐宙 註著帳暢腸 頂賃鎚漬坪 亭定挺艇 | 邸滴撤店伝 塗菟度凍嶋 盗祷蕩鐙堂 萄涜栃寅豚 内楢汝虹 | 如禰捻嚢覗 派廃肺楳蝿 柏曝箱畑伐 蛤搬畔頒蛮 扉碑避枇 | 鼻菱姫氷描 鰭頻富斧譜 武葺腹物焚 丙並癖片娩 歩戊呆抱 | 法蓬鳳帽冒 防朴堀摩毎 鱒迄蔓蜜眠 椋迷綿孟木 籾冶役鑓 | 諭幽猶郵輿 揺用踊沃来 乱利裏葎硫 虜梁諒厘鱗 伶苓歴漣 | 蓮路榔蝋倭 鷲湾 丐乖于 从仟佇侑俘 倨倩會傀 | 僉僣儕儿兪 冑冪凅凰刪 剞劍劬勣匆 匣丗卻厰叮 吭呵咀咥 | 咫唏啀唸啻 喇嗔噎噫嚠 嚼囗國圷垈 垪埖塋墟壓 壟夊夸奢 | 奸姨娜婢嫣 嬋孅孰它寤 寳尨屏岑峅 嶌崑嵎嶢巉 巵幄幤廁 | 廖廩弃弭彖 徂徘忸怙怦 恊恫悛惠慍 愃愨慂慴憙 憫懆懺戉 | 戞扎抉拗拜 拮挾捶捩揶 攝攪擒舉擴 攤畋敲斷旙 杳晁晰曁 | 曄曰霸杞杼 柯柝栞梳梭 梵椈棧棹棆 楮楝槓榧槨 樅櫁橇檍 | 檗櫞蘖盜歔 殄殫毋麾汕 汾沽泛洽涓 涅淆淙渙湍 游溯溟滲 | ||
E0 | 漾潯澑濆濮 濾瀾炬烙煦 熕燔燿爲牴 犧狢猜獎獵 珥琲瑩璧 | 瓠瓸甕畊畫 疉疳痊痼瘉 瘰癢癶皖皺 盧眤睚瞎瞿 矜礪碣碾 | 磧礬祓禮秡 禀穡窗窶竏 竦笘笄筧箍 篋簑篳簟籀 籵粨糅糲 | 紂紿絮綛總 緝縣繆縲繹 辮纔罌罟羃 羣翅翳耙聒 聰肛胙脛 | 隋腥膠膵臍 臧舊艀艢艾 苣苻茴茯莢 荳菎菠菻蒭 萵蒻蓿蓼 | 蕁薊蕷藕藾 乕蚪蛉蛟蛻 蜷蝌蝣螽蟆 蟶蠡衒衵袙 裄裴褞褸 | 襦覃覬觜訌 詆誄諄諤謌 謳譏譬讓豌 貂貘貶賻齎 赳跖跼蹂 | 蹇踪躅躪軈 輊輛輾轢辷 逅逖遐遞邁 邵鄲酳醪釐 鈞鉅銜鋩 | 錙鍠鎹鏐鐐 鑄鑵閂閠闊 關陂陟險隹 雕霏霾靤靼 鞨韋頏顏 | 顱飃餘餽饒 馼駱騙騾驤 髏髦鬆鬨魏 鮑鯊鯤鰔鰄 鰲鳧鴪鵁 | 鵝鶇鷄鷙鸛 麌麪黜黴鼈 齔齪槇 | 纊棈伃偀僴 劜厓喆塚妤 岦嶸恝愷擎 昤暲柀槢毖 浯湜瀇煇 | 犾珒璉皦礰 竧綠荿蕫訷 譿逸釞鈺銧 鋕鋿鏸隯顗 髙鵰ⅱⅹ | |||||
F0 | | | | | | | | | | | ⅰⅸⅦ㈱蓜 丨侊偆兤勛 﨎垬奓甯嵓 弴惕抦昻晴 朗﨓橳汯 | 涖渧瀨凞玽 琪皂砡祥箞 罇葈﨡諟赶 鄕釥鉙鋗錡 鍗閒靍餧 | 髜鵫 |
それぞれの一覧を比較すると、「CP942C」は「Shift_JIS」にIBM拡張文字 (とユーザー定義外字)を加えたもの、 「MS932」は「CP942C」にNEC特殊文字・NEC選定IBM拡張文字を加えたもの、 ということがよく理解していただけると思います。
かつて機種依存文字・環境依存文字として嫌われ「使うな」とまで言われていた、 丸文字・ローマ数字・カッコ株「①②③ⅠⅡⅢ㈱」などは、いわゆる「13区」の「NEC特殊文字」の範囲です。 NEC選定IBM拡張文字とIBM拡張文字も同様に機種依存文字・環境依存文字なのですが 使用頻度が低い文字であることから、気にされることが少なかったのだと思います。 逆に言えば、13区の文字はそれだけ便利で使いたくなる文字なのだと思います。
Javaでは「Shift_JIS」の取り扱いに迷走がありました。
バージョン | SJISコンバータ | MS932コンバータ | コメント |
---|---|---|---|
Java1.1 まで | SJIS, Shift_JIS | なし | 「Shift_JIS」は「SJIS」のエイリアスだった。「MS932」は存在しなかった |
Java1.1.8~1.4.0 | SJIS | MS932, Shift_JIS | 「MS932」が追加され、「Shift_JIS」は「MS932」のエイリアスに変更された |
Java1.4.1以降 | SJIS, Shift_JIS | MS932 | 「Shift_JIS」は「SJIS」のエイリアスに変更された |
Java1.1.8以降で「Shift_JIS」が「MS932」のエイリアスに変更されたときには、 「Shift_JIS」を使っていた場合でも指し示す内容が変わったものの 使える文字が増えただけなので、問題は顕在化しませんでした。
しかしJava1.4.1以降で、「Shift_JIS」が「MS932」のエイリアスから「SJIS」のエイリアスに変更されたときには、 「Shift_JIS」が扱える文字の範囲が小さくなったため、それまで使っていた文字が表示できなくなる現象が多発し問題になりました。
「SJIS」や「MS932」を使っている限りは問題はないのですが、「Shift_JIS」を使った場合にだけ問題が発生しうる気づきにくい現象です。 「生のShift_JIS」を使うことは少ないでしょうから、Javaを使う際には「MS932」(もしくは「Windows-31J」)を 明示的に指定するようにしましょう。
このページは、Shift_JIS系の文字を一覧表にした時に、拡張文字がどこに配置されているのか、 それぞれどのあたりが違っているのかを頭の中でイメージしたいと思い作成しました。 このページを作ったことにより、自分ではかなり整理できました (それでもまだ十分に理解したとはいえない状態ですが…)。
とりとめもない内容になってしまいましたが、何かのお役に立てれば幸いです。