2012年5月7日月曜日

UTF-16 とは何ですか

UTF-16 は、符号なしの 16 ビットコードユニットを 1 〜 2 個使って、Unicode のコードポイントを符号化します。U+0000 〜 U+FFFF の値は、同じ値の 16 ビットユニット 1 個で符号化されます。補助文字はコードユニット 2 個でエンコードされます。1 つめのコードユニットは上位サロゲート範囲 (U+D800 〜 U+DBFF)、2 つめのコードユニットは下位サロゲート範囲 (U+DC00 〜 U+DFFF) に対応しています。これは複数バイトのエンコーディングと概念上よく似ていますが、重要な違いがあります。U+D800 〜 U+DFFF の値は UTF-16 用に予約されていて、これらの値にコードポイントとして文字が割り当てられることはありません。つまり、文字列内の個々のコードユニットが 1 ユニットの文字を表しているのか、2 ユニットの文字の最初のユニットまたは 2 番目のユニットを表しているのかをソフトウェアで判断できるということです。これにより、0x41 が文字 A であるのか 2 バイト文字の 2 番目のバイトであるのか判りづらかった、従来の複数バイト文字エンコーディングが大幅に改善されました。

0 件のコメント:

コメントを投稿