文字コードについてのまとめ

  • [文字集合]
    • JIS X 0201:1969 ANK文字が定義されている 制御文字33文字, ASCII文字63文字, カタカナ63文字 計191文字
    • JIS X 0208:1978, 1983, 1990, 1997 → 1面で94(区)×94(点)=8836文字を表せる中 6879文字が定義されている 記号・英数字・かな(1〜8区)、第1水準漢字(16〜47区)、第2水準漢字(48〜84区)、
    • JIS X 0212:1990 → JIS X 0208に含まれない補助漢字6067文字(Shift_JISでは利用できない) 非漢字(2〜11区)、漢字(16〜77区)
    • JIS X 0213:2000 → JIS X 0208から4344字追加され、第1面には非漢字、第1〜第3水準漢字8787文字(1〜94区)、第2面には第4水準漢字2436文字(1, 3〜5, 8, 12〜15, 78〜94区)、計11223文字が定義されている
    • JIS X 0213:2004 → JIS X 0213:2000から168文字の字形が変更され、10文字が1面に追加された 第1面8797文字(残り領域の39字は予約文字)、第2面2436文字、計11233文字が定義されている(予約文字:0xA3FC〜0xA3FE(3), 0xA8DF〜0xA8E6(8), 0xA8FD〜0xA8FE(2), 0xACF4〜0xACFC(9), 0xADD8〜0xADDE(7), 0xADF0〜0xADF2(3), 0xADF4〜0xADF7(4), 0xADFA〜0xADFC(3))
    • JIS X 0221:2001 → Unicodeの定義
    • NEC選定IBM拡張文字89〜92区, NEC特殊文字 13区, IBM拡張文字115〜119区(95〜120区はShiftJISの0xF000〜0xFC00を指すために使われる)
  • [エンコーディング]
    • JIS漢字コード(ISO-2022-JP, CP50220) 1バイト目、2バイト目とも 0x21(1)〜0x7E(94)に対応 8836文字表現可能(それ以上の文字をあらわすためESCシーケンスで切り替えを行う)ASCII:0x1B2842, JISX0201:0x1B284A, JISX0208:0x1B2442, JISX0212:0x1B242844, JIX0213(1面):0x1B242851, JIX0213(2面):0x1B242850
    • シフトJIS漢字コード(Shift_JIS, CP932) 文字コード範囲1バイト目 0x81〜0x9F(31), 0xE0〜0xFC(29) 2バイト目 0x40〜0x7E(63), 0x80〜0xFC(125) 11280文字表現可能
    • EUC漢字コード(EUC-JP, CP51932) 区、点それぞれに0xA0を足したものが1バイト目、2バイト目のコードとなる。JISX0201のカタカナをあらわすときは前に0x8Eをつけて2バイトであらわす、JISX0212を表すときは前に0x8Fをつけて3バイトであらわす
    • Shift_JIS-2004 1バイト目は1面のとき、1<=区<=62なら(区+0x101)/2, 63<=区<=94なら(区+0x181)/2。2面のとき区が1, 3〜5, 8, 12〜15なら(区+0x1DF)/2-区/8*3, 78〜94なら(区+0x19B)/2。2バイト目は、区が奇数のとき、1<=点<=63なら点+0x3F, 64<=点<=94なら点+0x40、偶数のとき点+0x9E
    • ISO-2022-JP-2004 区、点それぞれに0x20を足したものが1バイト目、2バイト目のコードとなる。エスケープシーケンスで次の文字集合に切り替え可能(ASCII:0x1B2842, JIX0213(1面):0x1B242851, JIX0213(2面):0x1B242850) 改行前と文字列の最後はASCIIに切り替わっている必要がある
    • EUC-JP-2004 JISX0213の1面の区、点それぞれに0xA0を足したものが1バイト目、2バイト目のコードとなる。JISX0201のカタカナをあらわすときは前に0x8Eをつけて2バイトであらわす、JISX0213の2面を表すときは前に0x8Fをつけて3バイトであらわす
    • Unicode(UTF-8, CP65001) 34168字