ちょっとしたメモ

UTF-9とUTF-18がRFC4042に

Unicode/ISO10646の文字セットの符号化は、ウェブではUTF-8が標準になりつつあるが、8ビット/ワードより大きな単位で動くマシンなら、オクテット(8ビット)ではなく、ノネット(nonet: 9ビット)を採用することでもっと効率的な符号化ができるはず。というわけで、ノネットを用いる符号化法がRFC 4042: UTF-9 and UTF-18 Efficient Transformation Formats of Unicodeとして4月1日に公開された。

UTF-8は、ASCIIが1バイトで表現できる代わりに、漢字を含むCJKなどは3バイトが必要という不均等な符号化法だ。従来のASCIIコードによる文書やプログラムが変換なしで利用できる一方、日本語の文書にとっては効率が悪い。ところが、ここに1ビットを加えたノネットを用いることで、CJKを含むBMP領域全体が「2バイト」に収まることになる。

   [UNICODE] codepoints in the range U+0000 - U+00FF ([US-ASCII] and
   Latin 1) are represented by a single nonet; codepoints in the range
   U+0100 - U+FFFF (the remainder of the BMP) are represented by two
   nonets; and codepoints in the range U+1000 - U+10FFFF (remainder of
   [UNICODE]) are represented by three nonets.

RFC 4042: 2. Overview

RFCにはUCS-4とUTF-9の相互変換のサンプルルーチンも示されており、実装にも問題はないだろう。ノネットが使える環境ならば、この符号化による効率化のメリットは大きい。

もちろん、RFCに Normally, UTF-9 and UTF-18 should only be used in the context of 9 bit storage and transport. と記されているように、9ビットが使えない環境とのデータのやり取りに関しては十分な注意が必要だ(そして、このRFCが4月1日付である点にも)。

map - at