Unicode 〜UTF-8、UTF-16との違い〜
UnicodeとUTF-8、UTF-16との違いもこれでスッキリ!!
 UnicodeとUTF-8、UTF-16との違いはなんでしょうか?
 ここでは、あまり詳細にはこだわらず、これらの概念を整理してみたいと思います。

 まずUnicode
 これは文字集合です。アルファベットや記号はもちろん、漢字やひらがな、ハングルやヘブライ文字など、世界中で使われている文字を集めたものです。
図1
 次にUTF-8UTF-16
 これらはUnicodeで定義されている一つ一つの文字を、どのように符号化するかという文字符号化方式エンコーディング)です。
 たとえば、Unicodeで定義されている「あ」という文字を、UTF-8とUTF-16で符号化すると下記のようになります(16進数表記)。
 Unicodeという一つの文字集合に対して、異なる文字符号化方式UTF-8、UTF-16が存在し、符号化した結果も異なります。
図2

 どうしてUnicodeという一つの文字集合に対して、異なる文字符号化方式が存在するのかといえば、そこには歴史的な経緯があり、それぞれの文字符号化方式に長所・短所があるので、目的に応じて使い分けられています。
 UTF-8とUTF-16それぞれの特徴を下表にまとめます。

UTF-8 UTF-16
・ASCIIに対して上位互換となっている。
・ASCII互換部分は1バイトである反面、漢字や仮名などの表現に3バイトを要する。
・バイト単位の入出力を行うため、バイト順の影響がない。
・BMP()内の文字は2バイト、BMP以外の文字は4バイトで表す。
・バイト単位の入出力でバイト順を識別するためのBOM()が必要。
・WindowsXPなどの内部コード

 繰り返しになりますが、Unicodeというのはあくまで文字集合であって、実際に文字をデータとしてファイル等に保存する場合にはUTF-8やUTF-16といった文字符号化方式を使います。

 ところが!!

 Windowsメモ帳の保存ダイアログの「文字コード」セレクトボックスでは、「UTF-8」の他に「Unicode」が選択できるようになっています。

図3

 なぜ、保存(エンコーディング)するのに文字集合である「Unicode」が選択できるのでしょうか?
 実は、ここでいう「Unicode」とは「UTF-16」を指しています。
 文字コード「Unicode」を選んで保存すると、実際には「UTF-16」でエンコードされて保存されます。
 まぎらわしいので、「UTF-16」と表示してほしいですね。
 sakuraエディタなどでも同様に保存ダイアログで「Unicode」を「UTF-16」と同じ意味で使っています。

 ちなみに上図の文字コードの選択肢「ANSI」という表示もおかしくて、正しくは「CP932」です(CP932についてはShift_JIS、CP932、MS932、Windows-31Jをご覧ください)。

 上記の説明では簡便にするため、エンディアンBOM、またBMPについては触れていません。
 エンディアンやBOMについては、Unicode 〜エンディアンとBOM〜を、BMPについてはUnicode 〜UCS-4とUCS-2〜をご覧ください。


Yahoo!ブックマークに登録 Googleブックマークに登録 はてなブックマークに登録 livedoorブックマークに登録 deliciousブックマークに登録 Buzzurlブックマークに登録


トップ | このサイトについて | 管理者へメール | サイトマップ
Google www una.soragoto.net  
Copyright(c) 2009 - 2012 una All Rights Reserved.