UTF-8は1~4バイト(初期の定義では6バイトまで)の可変長コードです。
それぞれの1バイトの値で、それが文字の最初のバイトであるか、2バイト目以降のバイトであるかがわかるようになっています。
コード | カテゴリ | 備考 |
---|---|---|
00-7x | 1バイト文字 | US-ASCIIにおなじ |
8x,9x,Ax,Bx | 多バイト文字の2バイト目以降 | |
Cx,Dx | 2バイト文字の開始バイト | |
Ex | 3バイト文字の開始バイト | 漢字はおおむねこれで開始 |
Fx | 4バイト以上の文字の開始バイト | F0-F7は4バイト、(F8-FBは5バイト、FC-FDは6バイト) |
U+XXXX と表されるUnicodeからUTF-8への換算表です。もちろん逆も可能。
ビットの状態にしてから切り張りをしています。
Unicode範囲(21ビット) | その0でない部分の二進表現 | UTF-8 の二進表現 | |
(1) | U+ 00 7Fまで | 0ppp pppp | 0ppp pppp |
(2) | U+ 07 FFまで | 0000 0sss pppp pppp | 110s sspp 10pp pppp |
(3) | U+ FF FFまで | ssss ssss pppp pppp | 1110 ssss 10ss sspp 10pp pppp |
(4) | U+ 1F FF FFまで | t tttt ssss ssss pppp pppp | 1111 0ttt 10tt ssss 10ss sspp 10pp pppp |
サロケートペアを使っている時には21ビットの表現に戻してから換算します。