プログラマのための文字コード技術入門 第4章「代表的な文字符号化方式」その1

プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)

プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)

長かった第3章を抜けて、今日から第4章の文字符号化方式のところです。

そのまえにちょっと復習

  • 「符号化文字集合」とは符号位置(整数の組)と文字(字形)を関連付けるもの。Unicode は符号化文字集合。狭義の「文字コード
  • 文字符号化方式」とは符号位置をどのようにバイト列として表現するかの方法。UTF-8UTF-16 は符号化方式
  • 両者が一緒になってたり、符号化方式について明確に決まってないものもある。両方あわせて「文字コード」と呼ぶことも?

では4章の内容に入っていきます。

  • JIS X 0201 の符号化方式
    • 8ビット符号。GR, GL にそれぞれ7ビットの符号化文字集合を呼び出して使う
    • 7ビット符号。GL にラテン文字集合か片仮名文字集合を呼び出して用いる。切り替えする時は SHIFT-OUT/SHIFT-IN 制御文字で切り替える
      • GL の初期文字集合は普通ラテン文字集合だけどアプリケーションの決まりごととして片仮名集合から開始してもいいらしい。けっこういいかげんですね。
  • JIS X 0208 の符号化方式
    • 8種類も符号化方式が定められてる
    • EUC-JP, ISO-2022-JP, Shift_JIS 等の符号化方式を含む
    • GL, GR に符号化文字集合を呼び出して使う基本的な考え方は同じ
    • 漢字用7ビット符号。GL に JIS X 0208 を呼び出して固定で使う。1バイト文字との混合がなく常に1文字は2バイト
    • EUC-JP。GL に ASCII、GR に JIS X 0208 を呼び出す。ただし制御文字で1文字ぶんだけ JIS X 0201 片仮名、JIS X 0212 補助漢字を呼び出せる。
      • EUC-JP にエスケープシーケンスがあるとは知りませんでした。でも1文字にしか影響しないので途中から切り取る時の問題は軽減されていますね
      • けどこの制御文字による切り替えはソフトウェアによってサポートされてない場合もある(IE7 とか Safari4 とか)
      • GR の文字集合切り替えの仕様をなくしたものが「国際基準版・漢字用8ビット符号」
    • ISO-2022-JP
    • Shift_JIS
      • やけに複雑で JIS X 0208 に則ってない。なにやら計算式を用いて符号位置を算出する。

Shift_JIS は独自すぎてやだ、ということを時々聞いてましたがこれでどういうことはわかりました。Shift_JIS いやですね。