Saltar al contenido
uencoder

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).

Propósito

Equilibrar la eficiencia espacial con la cobertura completa de Unicode donde dominan los caracteres del BMP, como en la API de Windows y la representación interna de cadenas de Java.

Mecanismo

Un punto de código del BMP (U+0000-FFFF) se almacena directamente como una unidad de 16 bits. A un punto suplementario (U+10000-10FFFF) se le resta 0x10000 y se divide en mitades de 10 bits alta y baja, desplazadas por 0xD800 y 0xDC00, formando un par sustituto. El orden de bytes lo indica el BOM (U+FEFF).

Casos de uso

  • Cadenas internas de la API de Windows
  • Representación interna de cadenas de Java/JavaScript
  • Almacenamiento interno de String en .NET
  • Almacenamiento de nombres de archivo (NTFS)

Ejemplos

  • entrada
    A
    Output
    0x00 0x41

    UTF-16BE, 2 bytes

  • entrada
    😀
    Output
    0xD8 0x3D 0xDE 0x00

    A surrogate pair, 4 bytes

Errores comunes

Ignoring surrogate pairs, producing wrong character counts
Use code-point-aware APIs or surrogate-pair-aware iteration

Términos relacionados

Herramientas relacionadas

References