Estoy preguntando por el recuento de todas las posibles combinaciones válidas en Unicode con explicación.
1,111,998 : 17 planos × 65,536 caracteres por plano - 2048 sustitutos - 66 no personajes
Tenga en cuenta que, en teoría, UTF-8 y UTF-32 podrían codificar mucho más de 17 planos, pero el rango está restringido en función de las limitaciones de la codificación UTF-16 .
137,929 puntos de código están realmente asignados en Unicode 12.1 .
Tampoco entiendo por qué los bytes de continuación tienen restricciones a pesar de que el byte inicial de ese carácter borra cuánto tiempo debería ser.
El propósito de esta restricción en UTF-8 es hacer que la codificación se sincronice automáticamente .
Como contraejemplo, considere la codificación china GB 18030 . Allí, la letra ßse representa como la secuencia de bytes 81 30 89 38, que contiene la codificación de los dígitos 0y 8. Entonces, si tiene una función de búsqueda de cadenas no diseñada para esta peculiaridad específica de la codificación, una búsqueda del dígito 8encontrará un falso positivo dentro de la letra ß.
En UTF-8, esto no puede suceder, porque la no superposición entre los bytes iniciales y los bytes finales garantiza que la codificación de un carácter más corto nunca pueda ocurrir dentro de la codificación de un carácter más largo.