|
UTF-8 の仕様を知ったとき、U+0080 以降では1バイト目が C0〜FF、 2バイト目以降が 80〜BF の範囲内になっていて、EUC とかと違って 文字の先頭バイトの位置が確認できる仕様は賢いと思った。 その頃の UCS-4 では、1文字31ビットで最大で128群×256面×65,536文字の 収録が想定されていて(または32ビットだったかも…?)、 それをUTF-8 で表すと1文字あたり最大6バイト長まで続く仕様だったけど、 今は Unicode では、第16面(〜U+10FFFF)とまでに確定していたんですね。 これに伴い、UTF-8 も1文字あたり最大4バイト長 に減ってた。 通常の日本語文書(BMP範囲内)を扱う場合は3バイト長で足りていたので、 実用的には何の影響もないけど、ちょっと驚いた。 というわけで、現在の仕様では UTF-8 は以下になるらしい。 Table 3-6. UTF-8 Bit Distribution より
2進数でなくて16進数で書くと以下の通り。 Table 3-7. Well-Formed UTF-8 Byte Sequences
ちなみに第16面は、第0面(BMP) から数えて17面目にあたる。 17という数字は、なんだか計算機的にはしっくりこない数字だけど、 UTF-16のサロゲートで表現できる範囲が、第1〜16面になるので、 第0面(BMP) と第1〜16面を合わせると、計17面となる。(21ビット弱) サロゲートの仕様に合わせて、将来 Unicode で使う文字の範囲が決まったのかな? サロゲートペア とは、BMP の範囲のうち high surrogates (D800〜DB7F) と low surrogates (DC00〜DFFF) のそれぞれ1024文字分のコードポイントの 組み合わせで、1024×1024=20ビット分=16面分を表す仕組み。 |
| << 前記事(2008/11/04) | トップへ | 後記事(2008/11/09)>> |
| タイトル (本文) | ブログ名/日時 |
|---|---|
unicode 5.0
コンピュータで文字を扱うための共通規格Unicodeの最新動向。 ...続きを見る |
天気晴れ - ITと趣味のブログ 2008/11/11 07:19 |
| 内 容 | ニックネーム/日時 |
|---|
| << 前記事(2008/11/04) | トップへ | 後記事(2008/11/09)>> |