解説
UTF-8 符号化は各文字毎に 1 と 6 の間に使用して、オクテットのシーケンスとして UCS-4 文字を表します。それは ASCII と後方互換性をもっています。したがって、0x00-0x7f は ASCII 文字セットを参照します。 ASCII ではない文字のマルチバイト符号化は、全てが上位ビットがセットされているバイトで構成されます。実際の符号化は次のテーブルによって表わされます。
[0x00000000 - 0x0000007f] [00000000.0bbbbbbb] -> 0bbbbbbb
[0x00000080 - 0x000007ff] [00000bbb.bbbbbbbb] -> 110bbbbb, 10bbbbbb
[0x00000800 - 0x0000ffff] [bbbbbbbb.bbbbbbbb] ->
1110bbbb, 10bbbbbb, 10bbbbbb
[0x00010000 - 0x001fffff] [00000000.000bbbbb.bbbbbbbb.bbbbbbbb] ->
11110bbb, 10bbbbbb, 10bbbbbb, 10bbbbbb
[0x00200000 - 0x03ffffff] [000000bb.bbbbbbbb.bbbbbbbb.bbbbbbbb] ->
111110bb, 10bbbbbb, 10bbbbbb, 10bbbbbb, 10bbbbbb
[0x04000000 - 0x7fffffff] [0bbbbbbb.bbbbbbbb.bbbbbbbb.bbbbbbbb] ->
1111110b, 10bbbbbb, 10bbbbbb, 10bbbbbb, 10bbbbbb, 10bbbbbb
値の単一表現を越えるものが存在する場合、(例えば、0x00; 0xC0 0x80; 0xE0 0x80 0x80) 最短の表現が常に使用されます。より長い表現は潜在的なセキュリティリスクを提示し、エラーとして検出されます。そして、1:1 文字:オクテットシーケンスマッピングを破壊します。