2007/01/21 [日]
PDP-10 などの計算機では、マシンワードが 36bit なので、主に 8bit が単位の既存の UTF-8、UTF-16、UTF-32 では、36 の約数ではないので、無駄なビットが出てしまい、効率がよくありません。そこで 36bit の約数である 9bit 単位の nonet ごとに処理するのが適切になります。それを口実に、2005 年のジョーク RFC (RFC4042) として提案されたのが UTF-9 と UTF-18 です。ここでは、UTF-18 についての変換方法を説明します。なお、UTF-18 は UTF-9 とは違い、0x2FFFF までのコードポイント、及び 0xE0000-0xEFFFF までのコードポイントしか扱うことができません。
UTF-18 への変換方法は次の通りです。ただし U を UCS または Unicode のコードポイントを表すことにします。また Bxx という表現は左にある U の xx ビット目の値をあらわしています。数字の中の _ は見やすくするために便宜上挿入した記号です。
変換方法
- 次の表を用いて、U をバイナリ表現に変換します。
U の範囲 (16進) 変換された表現(バイナリ) 0000_0000-0002_FFFF B17B16B15B14B13B12B11B10B09 B08 B07B06B05B04B03B02B01B00 000E_0000-000E_FFFF 1 1 B15B14B13B12B11B10B09 B08 B07B06B05B04B03B02B01B00
- バイナリを、変換値とします。
変換例
-
漢字 (0x226F 0x575B) →
00100010_01101111 01010111_01011011 → 変換 →
00_00100010_01101111 00_01010111_01011011 →
00226F00575B
by seclan