こしごぇ(B)

旧:http://d.hatena.ne.jp/koshigoeb/

「プログラマのための文字コード技術入門」で勉強中(4)

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

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

  • コード変換
  • 変換出来ない場合
    • 変換元のテキストに含まれる文字が、変換先の文字コードに無い場合は変換出来ない
    • UTF-8からShift_JISに変換する場合などに起きる
  • 変換の原則
    • 変換前後でテキストが同じであるなら正しく変換されたとみなせる
    • 異なる文字集合体系の間で変換する場合、同じテキストという判断が自明で無いことがある
  • コード変換、文字変換
    • コード変換: 文字を変換せずにコードだけを変換する
    • 文字変換: コードだけでは無く文字も変換してしまう
  • アルゴリズム的な変換
    • 同一の符号化文字集合を元に定義された符号化方式同士の間で可能
    • JIS X 0208の符号化方式の変換
    • JIS X 0201とASCIIの違いの問題
      • 0x5C, 0x7E
    • Unicode の符号化方式の変換
      • ruby -e "puts ['C0A1'].pack('H*')"
  • テーブルによる変換
    • JIS X 0208Unicode の間の変換
      • 円記号とバックスラッシュ、オーバーラインとチルダ、波ダッシュ
    • JIS X 0208とASCII/JIS X 0201の間の変換
      • ハイフンマイナス
      • JIS X 0201 片仮名集合の場合
  • 文字コードの自動判別
    • Shift_JISEUC-JPかISO-2022-JPかを判別する(JIS系統)
    • UTF-16UTF-8かUTF-32かを判別する(Unicode系統)
    • 判別のツール
    • BOMによる判別
    • エスケープシーケンスによる判別
    • バイト列の特徴を読む
    • 自動判別の限界