-
Notifications
You must be signed in to change notification settings - Fork 0
MS_JISCharacterCode
- 戻る(文字コード)
日本の文字コード(JIS 文字・漢字コード)について纏める。
-
Windows で、Shift-JIS(文字コード)で表現できる範囲は、
JIS X 0208(キャラクタ セット)までの範囲である。 -
それ以上のキャラクタ セット(JIS X 0212 ~)は、
Unicode(文字コード)でのみサポートされる文字が混じる。 -
GT 書体などの文字セットには、Unicode にも無い文字が含まれる。
-
[参考] : GT書体 – Wikipedia
https://ja.wikipedia.org/wiki/GT%E6%9B%B8%E4%BD%93
補足(規格が多い理由): JIS の文字コード規格は
番号と通称が入り乱れるため混乱しやすい。
1 枚の図にすると整理できる。【文字集合(どの文字を含むか)】 JIS X 0201 … 英数字・カナ(1 バイト) ANK │ JIS X 0208 … 第1・第2水準漢字(6,879 字) ★ Shift_JIS の範囲 ├──── JIS X 0212 … 補助漢字(第3水準の一部) │ ※ Shift_JIS では表せない └──── JIS X 0213 … 第1~第4水準(11,233 字) ├ :2000 → JIS2000 └ :2004 → JIS2004 ★ JIS X 0221 … ISO/IEC 10646(=Unicode)の JIS 版 【符号化方式(どうバイトにするか)】 Shift_JIS / CP932 / EUC-JP / ISO-2022-JP / UTF-8 / UTF-16重要な関係:
含む文字集合 Shift_JIS(素) JIS X 0201 + JIS X 0208 CP932(Windows-31J) 上記 + NEC/IBM 拡張文字(エンコーディング) Shift_JIS-2004 JIS X 0201 + JIS X 0213(Windows は非対応) UTF-8 / UTF-16 Unicode 全体(JIS X 0213 を包含) 原文の要点——「JIS X 0212 以降は Unicode でしか扱えない」——は
正確である。
Windows が採用したのは CP932 であり、
Shift_JIS-2004 は実装されていない。
したがって、JIS2004 の文字を扱いたければ Unicode を使うしかない。**「GT 書体には Unicode にも無い文字がある」**という指摘も重要で、
Unicode は「すべての文字」を収録しているわけではない
(収録は継続中)。
現在は **IVS(異体字セレクタ)**で異体字を区別できるようになったが、
未収録の字は依然として外字で対処するしかない
(Windowsの外字)。
-
日本の文字コード - CyberLibrarian
http://www.asahi-net.or.jp/~ax2s-kmtn/character/japan.html -
文字コード表 JISコード(ISO-2022-JP)
http://charset.7jp.net/jis.html -
ISO-2022-JP - Wikipedia
https://ja.wikipedia.org/wiki/ISO-2022-JP-
俗に「JIS コード」と呼ばれることもある。
-
文字集合
- JIS X 0211 の C0 集合(制御文字)
- JIS X 0201 のラテン文字集合
- ISO 646 の国際基準版図形文字
- JIS X 0208 の 1978 年版 (JIS C 6226-1978) 1983 年および 1990 年版
- JIS X 0201 の片仮名文字集合は利用できない。
-
補足(ISO-2022-JP の性質): 「JIS コード」と俗称されるこの方式は、
エスケープ シーケンスで文字集合を切り替えるという、
他とは異質な仕組みを持つ。【ISO-2022-JP の構造】 ESC ( B → 以降は ASCII ESC $ B → 以降は JIS X 0208(2 バイト) ESC ( J → 以降は JIS X 0201 ラテン 例: "あA" は ESC $ B 24 22 ESC ( B 41 └─ 切替 ─┘ あ └─ 切替 ─┘ A**これは「状態を持つ符号化方式」**であり、以下の問題を生む。
・途中から読むと、どの文字集合か分からない ・文字列の連結・切り出しで【エスケープが壊れる】 ・grep などのバイト単位の処理と相性が悪い ・7 ビットに収まるのが唯一の利点(当時のメールの制約)現在使われるのは、古いメール システムとの互換だけである。
メールも現在は UTF-8 が主流であり、
新規で ISO-2022-JP を選ぶ理由はない。**「JIS X 0201 の片仮名(半角カナ)が使えない」**という制約も重要で、
ISO-2022-JP のメールに半角カナを入れると化ける
——これが「メールで半角カナを使うな」と言われた歴史的理由である
(現在は UTF-8 なら問題ない)。.NET で扱うには、コードページ 50220 / 50221 / 50222 を使う
(プロバイダー登録が必要——エンコーディング)。
- JIS X 0201
https://ja.wikipedia.org/wiki/JIS_X_0201- JIS X 0208 には JIS X 0201 にあるほぼすべての文字がある・重複する。
- JIS X 0211 (ISO/IEC 6429) で規定される制御文字集合と組み合わせて使用する。
- 通称:ANK コード
- 旧規格番号は JIS C 6220。
補足(JIS X 0201 が「半角カナ」の出所): この規格が定めるのは
1 バイトで表す英数字・記号・カタカナである。0x20~0x7E … ASCII とほぼ同じ(ただし 2 箇所違う ★) 0xA1~0xDF … 【カタカナ】(いわゆる半角カナ)★ ASCII との相違——これが今も事故を起こす。
コード ASCII JIS X 0201 0x5C \(バックスラッシュ)¥(円記号)0x7E ~(チルダ)‾(オーバーライン)【日本語 Windows でパス区切りが ¥ に見える理由】 内部的には 0x5C(バックスラッシュ) 日本語フォントが 0x5C を「¥」の字形で描く → 同じ文字。表示だけが違う 【現在の問題】 Unicode では別の文字になった U+005C \ REVERSE SOLIDUS ← パス区切り U+00A5 ¥ YEN SIGN ← 円記号(半角) U+FFE5 ¥ FULLWIDTH YEN SIGN ← 円記号(全角) → 金額欄に U+005C が入る、パスに U+00A5 が入る、等の混乱半角カナの現在の扱い:
・Unicode では U+FF61~U+FF9F(半角形)に収録されている → 【使えるが、正規の文字ではなく「互換文字」】 ・NFKC 正規化すると【全角カナになる】 ・銀行・保険系の固定長ファイルでは今も現役 ・画面入力では、全角に寄せるのが一般的
https://ja.wikipedia.org/wiki/JIS%E6%BC%A2%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89
-
JIS X 0208(非漢字、第1、第2水準漢字)
https://ja.wikipedia.org/wiki/JIS_X_0208- 収録
- ひらがな、かたかな、漢字、全角記号などの 2 バイト文字。
- 漢字コード部分、
よく使われる第 1 水準の漢字 2,965 字
あまり使われないが、ないと不便な第 2 水準の漢字 3,390 字
- 通称:JIS 基本漢字
- 収録
-
JIS X 0212(非漢字、補助漢字)
https://ja.wikipedia.org/wiki/%E8%A3%9C%E5%8A%A9%E6%BC%A2%E5%AD%97- 収録
- JIS X 0208 にない文字を集めた文字集合
- 使用頻度の低い文字で構成される第 3 水準の漢字および非漢字。
- 通称:JIS 補助漢字
- 収録
-
JIS X 0213(非漢字、第1~第4水準漢字)
https://ja.wikipedia.org/wiki/JIS_X_0213-
JIS X 0208 を包含し更に第三・第四水準漢字などを加えた上位集合
-
収録
- JIS X 0208 の 6,879 字
- 第 3 水準の漢字 1,259 字(うち、10 字は 2004 年の改定時に追加)
- 第 4 水準の漢字 2,436 字
- 非漢字 659 字
-
通称:JIS 拡張漢字、2000JIS、JIS 第3水準・第4水準漢字
-
-
JIS X 0221(国際符号化文字集合)
https://ja.wikipedia.org/wiki/JIS_X_0221- ISO/IEC 10646 に対応する JIS 規格。
- 通称:UCS
補足(JIS X 0212 と JIS X 0213 の関係): この 2 つは
どちらも「JIS X 0208 の拡張」だが、互換性がない——
ここが分かりにくい点である。【JIS X 0212(1990年)補助漢字】 ・JIS X 0208 と【組み合わせて使う】設計 ・Shift_JIS では表現できない(符号空間が足りない) ・EUC-JP では表現できた(3 バイト表現) ・結果: 【ほとんど普及しなかった】 【JIS X 0213(2000年)拡張漢字】 ・JIS X 0208 を【包含する】上位集合 ・JIS X 0212 とは【別の体系】(一部の文字が重複) ・Shift_JIS-2004 / EUC-JIS-2004 という符号化がある ・Windows は【採用しなかった】(CP932 のまま) ・結果: Unicode 経由でのみ実用された原文の記述で注意すべき点:
「JIS X 0212 = 第 3 水準」という説明は通例の言い方だが、
JIS X 0213 の第 3 水準とは中身が違う。
「第 3 水準」という語が 2 つの規格で別のものを指すため、
どちらの規格の話か明示する必要がある。JIS X 0221 について:
これは Unicode(ISO/IEC 10646)を JIS 規格として取り込んだものであり、
文字を新たに定めたものではない。
文字のチェック方式 の原文に
「(Unicode? JIS X 0221?)」という注記があるのは、
同じものの別名という意味である。
-
78JIS または JIS78
1978 年に制定された JIS C 6226:1978 -
83JIS または JIS83:
1983 年に制定された JIS C 6226:1983(JIS X 0208:1983) -
90JIS または JIS90:
1990 年に制定された JIS X 0208:1990(JIS X 0212:1990 を含める場合もある) -
97JIS または JIS97:
1997 年に制定された JIS X 0208:1997 -
2000JIS または JIS2000:
2000 年に制定された JIS X 0213:2000 -
2004JIS または JIS2004:
2004 年に制定された JIS X 0213:2004
補足(改定ごとに字形が変わった=「例示字体の変更」): 改定の
**最大の実務的影響は、字の追加ではなく「字形の変更」**である。
改定 主な変更 78 → 83 例示字体を大幅に変更(約 300 字)。22 組の入れ替えも発生 83 → 90 「凜」「熙」の2 字を追加(文字のチェック方式 の注記) 90 → 97 文字の追加なし。規格の記述を整理 2000 → 2004 168 字の例示字体を変更(JIS2004関連) 【83JIS の入れ替え問題】 同じコードに、78JIS と 83JIS で【別の字】が割り当てられた例がある 例: 0x〜 が 78 では「鴎」、83 では「鷗」…といった対応の変更 → 78JIS 時代のデータを 83JIS で読むと、字が変わる 【現在も影響が残る箇所】 ・古い基幹システムのデータ ・マイクロフィルム・紙からの電子化データ ・戸籍・住民票システムJIS2004 の字形変更(168 字)は現在も現役の問題であり、
JIS2004関連 で詳しく扱われている。
-
JIS X 0201
- ANK コード
-
JIS X 0208
- JIS 漢字コード
- JIS 漢字
- JIS 第1第2水準漢字
-
JIS X 0212
- JIS 補助漢字
-
JIS X 0213
- JIS 拡張漢字
- 2000JIS
- JIS 第3水準・第4水準漢字
※ 2009 年 1 月現在
| 規格一般名 | 情報システム規格名 :以下は制定年度 |
規格内容 | サポートする 文字コード |
|---|---|---|---|
| ASCII | JIS X 0201:1969 | 7 ビット及び 8 ビットの情報交換用 符号化文字集合(漢字は含まない) |
Shift-JIS Unicode |
| JIS コード | JIS X 0202:1975 (ISO/IEC 2022) |
文字符号の構造及び拡張 | Shift-JIS Unicode |
| JIS コード | JIS X 0208:1978 JIS X 0208:1983 JIS X 0208:1990 JIS X 0208:1997 |
非漢字、第一水準漢字、第二水準漢字 1983 年に改正 1990 年に改正 → JIS90 1997 年に改正 |
Shift-JIS Unicode |
| JIS コード | JIS X 0212:1990 | 補助漢字※1の追加(JIS X 0208 と組合せ利用) | Unicode |
| JIS コード | JIS X 0213:2000 JIS X 0213:2004 |
非漢字、第一 ~ 第四水準漢字 2004 年に改正 → JIS2004 |
Unicode |
移行メモ(セル結合を展開した): 元の表は PukiWiki のセル結合記法
(~)で「JIS コード」「Shift-JIS
Unicode」を上のセルと
結合していたが、GitHub の表はセル結合に対応しないため、
同じ値を展開して記載した。
- ※1:文字コード(日本語漢字コード表)> JIS X 0212 (1990) to Unicode補助漢字コード表
http://charset.7jp.net/jis0212.html
補足(2009 年以降の動き): 表は「2009 年 1 月現在」とあるので、
その後の主な出来事を補っておく。
時期 出来事 2010 常用漢字表の改定(196 字追加、5 字削除)。「𠮟」「塡」等が追加され、JIS 第1・第2水準に無い字が常用漢字に入った 2011 IVS(異体字セレクタ) の Adobe-Japan1 コレクションが整備 2011~ Unicode の CJK 拡張が継続(拡張 D~J) 2017 戸籍統一文字・住基ネット統一文字の Unicode 対応が進む 2019 Windows 10 1903 で「UTF-8 をシステム既定に」がベータ提供 2020~ MJ 文字情報一覧表(IPA)が実質的な標準に。約 6 万字 **最も重要な変化は「IVS の実用化」**である。
【IVS(Ideographic Variation Sequence)】 基底文字 + 異体字セレクタ(U+E0100~U+E01EF)の 2 文字で 「同じ字だが字形が違う」ものを区別する 例: 葛 (U+845B) … 標準の字形 葛 (U+845B U+E0100) … 異体字(下部が「匂」) 葛 (U+845B U+E0101) … 異体字(下部が「匃」) → 【外字を使わずに異体字を扱える】 → ただし【対応フォントが必要】、【文字数の数え方に注意】IVS はサロゲート ペアと同じ扱いの難しさを持つ
(見た目 1 文字がstring上は 3char)。
文字のチェック方式 のStringInfo/
書記素クラスタの話がそのまま当てはまる。現在の実務的な指針:
① 新規システムは【UTF-8 / Unicode 一択】 JIS の水準を意識するのは、レガシー連携の時だけ ② 氏名を扱うなら【MJ 文字情報一覧表】を参照する 戸籍統一文字・住基統一文字との対応表がある ③ 異体字は【IVS】で扱い、外字は最後の手段 ④ 「登録できる文字」を業務ルールとして明文化する → 技術で決めず、業務で決める
-
第一・第二水準、第三・第四水準漢字
- JIS漢字コード:JIS第一・第二水準―文字コード入門―
http://www.shuiren.org/chuden/teach/code/main4.htm - JIS漢字コード:JIS補助漢字・第三・第四水準漢字―文字コード入門―
http://www.shuiren.org/chuden/teach/code/main5.htm
- JIS漢字コード:JIS第一・第二水準―文字コード入門―
-
文字コード - CyberLibrarian
http://www.asahi-net.or.jp/~ax2s-kmtn/character/index.html-
日本の文字コード - CyberLibrarian
http://www.asahi-net.or.jp/~ax2s-kmtn/character/japan.html -
文字コード表
- ASCIIとANK - CyberLibrarian
http://www.asahi-net.or.jp/~ax2s-kmtn/ref/codes.html - JIS基本漢字 - CyberLibrarian
http://www.asahi-net.or.jp/~ax2s-kmtn/ref/jisx0208.html - JIS補助漢字(全コード表) - CyberLibrarian
http://www.asahi-net.or.jp/~ax2s-kmtn/ref/jisx0212/index.html - JIS拡張漢字(全コード表) - CyberLibrarian
http://www.asahi-net.or.jp/~ax2s-kmtn/ref/jisx0213/index.html - Windowsの機種依存文字 - CyberLibrarian
http://www.asahi-net.or.jp/~ax2s-kmtn/ref/mdc.html - Unicode - CyberLibrarian
http://www.asahi-net.or.jp/~ax2s-kmtn/ref/unicode/index.html
- ASCIIとANK - CyberLibrarian
-
- MJ文字情報一覧表(文字情報基盤整備事業 / IPA)
https://moji.or.jp/mojikiban/mjlist/ - 常用漢字表(文化庁)
https://www.bunka.go.jp/kokugo_nihongo/sisaku/joho/joho/kijun/naikaku/kanji/
Tags: 移行, .NET開発, 国際化対応, 文字コード
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。