このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

UCS-2

歴史的には、UCS2は昔のUnicodeコンソーシアム起源、UCS-4は昔の(しかし少し後の)ISO-10646起源だろう。この頃(今でもだが)文字番号と符号化(ビットエンコーディング)の区別は厳密ではなくて、番号付けにビット表現も一緒に想定してたと思える。したがって、UCS-2もUCS-4もビット符号化の規則と言える。

UCS-2もUCS-4も牧歌的(ナイーブ)で、「文字とコードが1:1対応する」という理想を信じていたように思える。UCS-2は16ビット単位のコード空間、UCS-4は31ビットのコード空間を持ち、それぞれの空間を2次元(面)、4次元(面群、群の集まり)に構造化している。

Unicodeは中庸を取って、20/21ビットで面群までをサポートした -- たぶん16面一群だったと思う。これがUCS-4の第00群? だったような。ともかく、面群の最初の面=BMPにUCS2をそのまま埋め込み、サロゲートペアを使った16ビット単位可変長符号化を基準(canonical)にしたわけだ。現実は、8ビット単位可変長符号化が主流になったけど。

現時点でのUCS-2とは、UTF-8に制約を付けた符号化方式と解釈するのがいいのだろう、たぶん。

  • 16ビット単位の固定長符号化
  • ビッグエンディアン
  • BMPのみ
  • サロゲートペアはサポートしない。
  • したがって、符号化できる文字には制限がある。

エンディアンを固定すれば、BOMも不要。付ける文字は制限されるがスッキリしてる。