Skip to content
nanakira edited this page Aug 18, 2016 · 1 revision

プログラマのための文字コード技術入門 メモ(未整理)

  • 文字とそれに対応するビット組み合わせを対応付ける規則を文字コードという
  • 文字コード = 符号化文字集合 = 文字集合を定義し、その集合の各文字に対応するビット組み合わせを一意に定めたもの

ISO/IEC 646

  • 7 bit 文字コード標準
  • ASCII を国際化したもの。共通部分と、各国規格で自由に割り当てられる部分に分かれている

015

  • システム内部で処理用に使われる内部コードと、入出力に使われる外部コードとは、同じである必要はない。
  • PC 用の OS は内部コードとして Unicode を採用するものが多い

017 制御文字

Hex code 意味
0x07 BEL ビープ音を鳴らす
0x09 HT 水平タブ (垂直タブは 0x0B)
0x0D CR キャリッジリターン
0x0A LF ラインフィード
0x1B ESC エスケープ

023 ASCII (American Standard Code for Information Interchange)

  • アメリカ以外でも使えるように、 ISO/IEC 646 各国版が生まれた
  • 日本は JIS X 0201 として標準化
    • バックスラッシュが円に
    • チルダがオーバーラインに
  • でもドイツ語とフランス語を同時に表現できない

026 ISO/IEC 2022

  • 8 ビットコードや 2 バイト(複数バイト)コードの導入で、複数の符号化文字集合を組み合わせて使用可能に。

8 ビットコード

  • 7 ビットコードを 2 面(GL/GR)持ち、制御文字によって任意の文字集合を呼び出して使う。

2 バイト文字集合

  • 0x21-0x7E の 94 x 94 = 8,836 文字収録可能
  • これも GL または GR に呼び出し可能。1 文字表現するのに 2 バイト必要

034 JIS X 0208

  • アジアでは各種2バイトコードが普及(扱う文字数が多いため)
  • 1978 年制定 6,879 文字収録
  • JIS 第 1・第 2 水準漢字を定める
  • 漢字以外にも、ひらがな、カタカナ、ラテン文字、ギリシャ文字、キリル文字、算用数字、各種記号類も包含

難点

  • 1バイトコード(ASCII) に含まれる文字も、JIS X 0208 では別の表現となる
文字コード A B C
ASCII 41 42 43
JISX0208 23 41 23 42 23 43
  • 1バイトコードで表現できる文字は従来通り1バイトコードで使いたい -> Shift_JIS, EUC-JP, ISO-2022-JP
  • EUC-JP/ISO-2022-JP は ISO/IEC2022 に則っているが、Shift_JIS はそうではない

036 ISO/IEC 8859-1(Latin-1)

  • ヨーロッパでは1バイトコードが普及
  • GR 領域に各国固有文字
  • 西ヨーロッパをカバー
  • 他にも ISO/IEC 8859-X が10種類以上

049 JIS X 0201

  • 日本版の ISO/IEC 646, 空き領域にカタカナ収録
  • 空き領域31文字 → Shift_JIS で活用

066 外字・機種依存文字

  • JIS X 0208 の空き領域を使って、各ベンダがベンダ定義外字(機種依存文字)を定義した

068 JIS X 0212 "補助漢字"

  • JIS X 0208 にない文字を補うため、JIS X 0208 とあわせて使う
  • Shift_JIS で扱えない

072 JIS X 0213

  • JIS X 0208 を包含する、「完成版の JIS X 0208」
  • JIS2000, JIS2004 とも呼ばれる
  • 94 x 94 を2面使用

096 ISO8859-15 = Latin-9

  • Latin-1 の作り直し
  • 使用頻度の少ない文字の代わりにユーロ記号等を採用

097 ISO/IEC10646

  • ISO/IEC10646 = UCS(Universal Multiple-Octet Coded Character Set) = Unicode
  • Unicode は最初の 128 符号位置を ASCII 同等に、次の 128 符号位置を ISO8859-1 と同等にしている -> Latin-1 から Unicode への変換は各バイトに 00 をつけるだけでよい

125 EUC-JP (Extended Unix Code)

  • ASCII + JIS X 0208 + JIS X 0201 片仮名集合 + JIS X 0212
  • GL 領域は ASCII 固定、GR 領域を残り3つ切り替え
  • JIS X 0208 と JIS X 0212 は 2 byte

129 ISO-2022-JP

  • RFC1468 メール向けに考案
  • 7 bit の符号化方式
  • ASCII + JIS X 0201 + JIS X 0208 (1978) + JIS X 0208 (1983)
  • (7 bit だから)GR 領域を一切使用せず、GL 領域をエスケープシーケンスで切り替え
  • 7 bit しか使えないメールに最適

132 Shift_JIS

  • JIS X 0201 の隙間に JIS X 0208 を変形の上押し込んだもの
  • 計算式が複雑
  • 正しく解釈しないプログラムがエスケープ文字と誤認識するケースがある
  • Windows の機種依存文字つきの Shift_JIS = CP932 (MS932)

138 UTF-16

  • Unicode 直系。
  • BMP の文字は 16 bit で、BMP 以外の面の文字はサロゲートペアを用いて 32 bit で表す。
  • サロゲートペア - BMP の中の文字割り当てのない符号位置2つを用いて BMP 外の面の符号位置を指す
  • エンディアンの違いの問題がある。
  • BOM(Byte Order Mark) U+FEFF を使ってエンディアン判別可能。 FEFF -> ビッグエンディアン FFFE -> リトルエンディアン

143 UTF-32

  • すべての文字が 32 bit
  • 現状あまり使われていない

146 UTF-8

  • 1つの符号位置に1バイトから4バイトをとりうる可変長の符号化形式
  • ASCII と互換、0x7F 以下のバイトは常に ASCII とみなせる

344 GB2312

  • 2 byte 文字集合
  • チベット文字、アラビア文字、モンゴル文字を含まない
  • EUC-CN: GL ASCII, GR GB2312

345 GB18030

  • 最大 4 byte の可変長
  • GB2312 の上位互換

347 Big5

  • 台湾 伝統的な字体 繁体字
  • 1 byte 2 byte 混在
  • Shift_JIS と似た構成で、ASCII はそのまま扱える

362 絵文字

  • 携帯電話の絵文字 Shift_JIS の空き領域に各社独自に絵文字を割り当てた
  • Unicode への絵文字取り込み ♨⤴🌋😊
Clone this wiki locally