Surrogate Pair
Un par sustituto es el mecanismo de UTF-16 que representa un punto de código del plano suplementario (U+10000 a U+10FFFF) usando dos unidades de código de 16 bits.
Propósito
Permite que UTF-16 cubra todo el Unicode más allá del BMP con unidades de 16 bits, conservando la eficiencia de 1 unidad para los caracteres del BMP.
Mecanismo
Reste 0x10000 al punto de código suplementario C para obtener un valor de 20 bits en 0-0xFFFFF; los 10 bits altos más 0xD800 dan el sustituto alto (0xD800-0xDBFF) y los 10 bits bajos más 0xDC00 el sustituto bajo (0xDC00-0xDFFF). La decodificación ejecuta el cálculo inverso.
Casos de uso
- Manejo de cadenas con emoji (p. ej., 😀 = U+1F600)
- Longitud e iteración de cadenas en JavaScript
- Manejo de caracteres anchos en las API de Windows
- Renderizado de escrituras antiguas y caracteres raros
Ejemplos
- entrada
😀Output\uD83D\uDE00High surrogate D83D plus low surrogate DE00
Errores comunes
- Splitting a surrogate pair by truncating mid-pair, creating lone surrogates
- Iterate code points with for...of or Array.from
Términos relacionados
UTF-16
UTF-16 es la forma de codificación de longitud variable de Unicode que usa 2 o 4 bytes por punto de código: los caracteres del BMP ocupan una unidad de código de 16 bits y los del plano suplementario, un par sustituto (2 unidades). GLOSARIO
Unicode
Unicode es el estándar internacional de codificación de caracteres que asigna un punto de código único (U+0000 a U+10FFFF) a cada carácter de casi todos los sistemas de escritura del mundo, con un espacio de 1.114.112 puntos. GLOSARIO
Code Point
Un punto de código es el valor numérico que el estándar Unicode asigna a cada carácter (U+0000 a U+10FFFF), el número de posición del carácter en el espacio de códigos. GLOSARIO
BOM
El BOM (marca de orden de bytes) es el carácter Unicode U+FEFF, colocado al inicio de un flujo de texto para indicar la forma de codificación y el orden de bytes. GLOSARIO