Laut Wikipedia-Artikel hat UTF-8 das folgende Format:
Erster Code Letzter Code Bytes Byte 1 Byte 2 Byte 3 Byte 4 point point Verwendet U + 0000 U + 007F 1 0xxxxxxx U + 0080 U + 07FF 2 110xxxxx 10xxxxxx U + 0800 U + FFFF 3 1110xxxx 10xxxxxx 10xxxxxx U + 10000 U + 1FFFFF 4 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx x bedeutet, dass dieses Bit zur Auswahl des Codepunkts verwendet wird.
Dies verschwendet zwei Bits in jedem Fortsetzungsbyte und ein Bit im ersten Byte. Warum ist UTF-8 nicht wie folgt codiert?
Erster Code Letzter Code Bytes Byte 1 Byte 2 Byte 3 point point Verwendet U + 0000 U + 007F 1 0xxxxxxx U + 0080 U + 3FFF 2 10xxxxxx xxxxxxxx U + 0800 U + 1FFFFF 3 110xxxxx xxxxxxxx xxxxxxxx
Es würde ein Byte sparen, wenn sich der Codepunkt außerhalb der mehrsprachigen Grundebene befindet oder wenn sich der Codepunkt im Bereich [U + 800, U + 3FFF] befindet.
Warum wird UTF-8 nicht effizienter codiert?