UTF-16 が単に Unicode と呼ばれることがある理由

| コメント(0) | トラックバック(0)

Windowsのメモ帳でテキストファイルを保存するときに文字コードを選択できますが、その選択肢では「Unicode」と「UTF-8」が並列に置かれています。これに違和感を持つ人も少なくないでしょう。このことを強い調子でけなしている文章をネット上で見かけたので、ちょっとこの件について書いてみましょう。

実はここで「Unicode」と言っているのはUTF-16のことです。現在多くの人は、「Unicodeの符号化方式としてUTF-16やUTF-8がある」ものと理解しているでしょう。拙著でもそう説明しています。するとWindowsのメモ帳の開発者はUnicodeを分かっていないのでしょうか。いえ、そうとも限りません。

過去の経緯

Unicodeは元々、16ビット固定長の文字コードとして開発されました。ASCIIが7ビットで1文字を表すのと同じように、Unicodeは16ビット版のASCIIですよ、エスケープシーケンスやSI/SOのような制御文字で文字集合を切り替えたりしないシンプルな文字コードですよ、という触れ込みだったのです。Unicode 2.0の仕様書でもそう説明されていました(過去記事参照: 「文字数制限」)。

しかし、のちに、最大65,536文字までしか表せない16ビットでは不足ということになり、サロゲートペアによって拡張するUTF-16が考案されたり、当初無意味だったUCS-4がBMP以外の面への文字の割り当てによって存在意義を持つようになったり(UTF-32)、はたまたASCIIと互換性のあるUTF-8がよく使われるようになったりして、「Unicode = 16ビット固定長」では具合が悪くなりました。それで「16ビット固定」のような言い回しはいつの間にかやめて、現在のような形になっています。ちなみにUnicode 8.0仕様書ではUTF-16の "origin" について、「UTF-16 is the historical descendant of the earliest form of Unicode, which was originally designed to use a fixed-width, 16-bit encoding form exclusively.」(2.5 Encoding Forms)と説明されています。

なので前世紀に書かれた文書やプログラムでは「Unicode = UCS-2」という前提があり、それを漫然と引き継いでいると、「Unicode」と言っているのが実質的にはUTF-16を指していることがあるわけです。

そして現在

今では個別の符号化方式としては「UTF-16」「UTF-8」のように言った方が適切なことは言うまでもありません。ただ、UTF-16の意味で「Unicode」と言われることがあるのは、単なる無知や誤解ではなく、それなりに過去の経緯が影響しているのだということです。

おわりに

なお、ここでは用語の説明などちょっと端折っているところもあるので、背景等含めて知りたい方は拙著をお読みいただければと思います。最後は宣伝?

トラックバック(0)

トラックバックURL: http://yanok.net/yanok/mt-tb.cgi/600

コメントする

最近のブログ記事

「小樽雪あかりの路」の魅力
北海道の冬のイベントというと札幌の雪まつ…
libiconv に JIS X 0213がない場合
GNU libiconvはJIS X 0…
「キュレーション」なる語について
DeNAのキュレーションサイトWelqの…
雪の青の夜景、札幌と函館
何日か前の朝のNHKニュースで札幌の夜景…
「2バイト文字」という言い方
「2バイト文字」という言い方につっこみを…

広告