De acordo com o artigo da Wikipedia , UTF-8 tem este formato:
Primeiro código Último código Bytes Byte 1 Byte 2 Byte 3 Byte 4 point point Usado 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 significa que este bit é usado para selecionar o ponto de código.
Isso desperdiça dois bits em cada byte de continuação e um bit no primeiro byte. Por que o UTF-8 não é codificado da seguinte maneira?
Primeiro código Último código Bytes Byte 1 Byte 2 Byte 3 point point Usado U + 0000 U + 007F 1 0xxxxxxx U + 0080 U + 3FFF 2 10xxxxxx xxxxxxxx U + 0800 U + 1FFFFF 3 110xxxxx xxxxxxxx xxxxxxxx
Ele economizaria um byte quando o ponto de código estiver fora do plano multilíngue básico ou se o ponto de código estiver no intervalo [U + 800, U + 3FFF].
Por que o UTF-8 não é codificado de maneira mais eficiente?