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 0
y 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 8
encontrará 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.