UTF-16

読み:ユーティーエフ・じゅうろく
外語:UTF-16: UCS Transformation Format-16 , Unicode Transformation Format-16
品詞:名詞,+規格

UnicodeISO/IEC 10646を、サロゲートペアという方法でUCS-4の文字を使えるようにした符号化方法。RFC 2781外部リンクで情報提供扱いで規定されている。

Unicode 3.0以降で採用された。

Unicodeは、元々は「16ビット固定長」の符号であり、ISO/IEC 10646用語ではUCS-2と表現されるものだった。従って扱える文字数は216で最大65,536文字に限られた。

そこでこのUnicodeの中で未定義だった領域に、サロゲートと呼ばれる1024個の領域を二つ(0xd800〜0xdb00と0xdc00〜0xdf00)用意し、これを組み合わせ1,024×1,024=1,048,576個の文字を扱えるようにした。

この文字数は、UCS-2の大きさである65,536(216)の16倍に相当する。

サロゲートペア

新たに出来た領域をUCS-4の1面〜16面として割り当て、UCS-4の0〜16面の計17面、最大1,114,112文字種まで利用可能となった。

この技術をサロゲートペアといい、このサロゲートペアを併用するUnicodeの符号化方法をUTF-16という。つまりUTF-16とは16ビットを基準とする可変長エンコードである。

ISO/IEC 10646のUCS-2との差は、このサロゲートペアの機能の有無である。

BOM

符号化された文書がUTF-16であるかどうかを識別するためと、エンディアンネスを識別するために、文書の先頭にはBOMと呼ばれるバイト0xFEFFが付加される。

UnicodeでU+FEFFという文字は、ZERO WIDTH NO-BREAK SPACE(幅の無い改行しない空白)という記号である。見えないし改行もされない、存在自体を無視できる文字である。

リトルエンディアンの場合、先頭2オクテットが0xFF、0xFEとなり、ビッグエンディアンなら0xFE、0xFFとなる。

BOMの無い文書

BOMが定義される以前の文書には、BOMが無いものもある。

現在それはUTF-16LEUTF-16BEと呼ばれ、名称でエンディアンネスを識別するようになっている。

UTF-16では、0〜16面の計17面しか扱えない。しかし、このRFCを書いたFrancois Yergeauは、これで充分だと考えた。

その根拠は、UCS-4の全領域を表現する方法は、実現はできても需要がないからである。UTF-16でさえ100万字の容量があるが、それを全て埋め尽くすほどコードポイントの需要があるとは考えにくい。

また、いずれUTF-16のエリアのコードポイントに文字がマッピングされるようになれば、徐々に可変長のUTF-16ライブラリより、固定ピッチのUCS-4のライブラリが増えるに違いないと考えられた。

UTF-16の存在意義は、16ビット固定長という従来の枠を破ることのみにあったと言える。

Unicodeが普及した現在、この予測を改めて考えると、結果は外れたと言える。文書ファイルなどでは、UCS-4ではなく可変長のUTF-8が普及することになった。そして、WindowsのAPIではUTF-16が使われているため、ある意味UTF-16はUTF-8より普及している。

予想のとおりに、UTF-16は廃れ、UCS-4になることは、当分は無さそうである。