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

コメントする

最近のブログ記事

電子マネーiDの隠れたお得
iDというのはSuicaやEdyのような…
Java 9 でようやくResourceBundle のデフォルト文字コードが UTF-8に
Java 9では国際化機構で用いられるリ…
Unicode 10.0リリース、変体仮名を収録
Unicode 10.0が2017年6月…
Chrome 拡張機能 Personal Blocklist でパクリサイトをブロックしよう
Google検索結果からサイトを除外でき…
Unicode の嫌なところを触ってしまった Python
Pythonとlibiconv, nkf…

広告