Windows NTではそれまで存在した当時16ビットのWindowsと異なり、内部処理にUnicodeを採用しました。Unicodeの利点は主に2つあったと思います。

  • 1文字が固定長:従来のマルチバイト文字列では1文字が1バイトだったり2バイトだったりするが、それでは文字列処理が面倒。
  • 国際化が容易:内部処理を統一することにより、各地域・言語への移植に必要な手間が減る。

当初Unicodeは16ビットでしたが、それでは全く足りませんでした。結局後にそれ以上拡張されています

Windows 2000の頃から採用されているのは(Unicodeの符号化形式の1つである)UTF-16です。これは16ビット単位を基本としていますが、可変長の文字コードです。従来の16ビットだったUnicodeのコードと互換を取りつつ、一部の文字をサロゲートペアと呼ばれる仕組みにより16ビット単位2つで1文字を表すことになっています。

可変長になったということはつまり上に挙げた内の1つ、固定長は駄目になってしまいました。(勿論Windowsが採用していないだけで、以前書いたようにUnicodeとUCSにはそれぞれ、UTF-32やUCS-4という32ビット固定長の符号化形式が存在します)

スポンサード リンク

この記事のカテゴリ