Puntos de código, UTF-16 y escapes
Unicode asigna un número a cada carácter, escrito como U+ y hexadecimal. Un punto de código no es lo mismo que una secuencia UTF-8 ni siempre una posición de una cadena JavaScript.
JavaScript usa unidades UTF-16. Los valores superiores a U+FFFF necesitan un par sustituto, mientras \u{…} puede escribir el escalar completo.
La herramienta reconoce únicamente U+, \uXXXX y \u{…}. No usa eval, Function ni ejecución de scripts.
Cómo escapar y recuperar Unicode
- Elige Codificar para inspeccionar texto normal.
- Selecciona U+, llaves o cuatro dígitos según el objetivo.
- Elige Decodificar para una lista de puntos o escapes.
- Corrige los errores de rango o pares sustitutos en la fuente.
- Escapa después el resultado para HTML, URL, JSON u otro contexto.
Ejemplos de puntos de código y escapes
Un mismo carácter puede ser un escalar, un escape con llaves o un par de unidades UTF-16.
| Entrada | Salida | Dirección de conversión | Notas |
|---|---|---|---|
A |
U+0041 |
Codificar | Punto de código ASCII. A ocupa un punto de código y una unidad UTF-16. |
😀 |
U+1F600 |
Codificar | Punto de código emoji. Es un escalar fuera del plano básico. |
😀 |
\u{1F600} |
Codificar | Escape con llaves. Escribe el escalar completo directamente. |
😀 |
\uD83D\uDE00 |
Codificar | Par sustituto UTF-16. Dos escapes de cuatro dígitos representan el emoji. |
U+4F60 U+597D |
你好 |
Decodificar | Decodificar puntos chinos. Los tokens pueden separarse con espacios o comas. |
\u0041\u{1F600} |
A😀 |
Decodificar | Formas mezcladas. Solo se combinan las sintaxis compatibles, nunca código arbitrario. |
Sintaxis admitida y escalares
Los tokens U+ llevan de uno a seis dígitos hexadecimales y deben estar entre U+0000 y U+10FFFF, fuera del rango sustituto.
\uXXXX representa unidades UTF-16 y exige pares correctos. \u{…} representa escalares directamente.
- El hexadecimal no distingue mayúsculas.
- Los sustitutos no son escalares independientes.
- Los caracteres suplementarios usan dos \uXXXX.
- Se rechazan sustitutos sin pareja.
- No se aceptan expresiones de código.
Cálculo y validación de pares sustitutos
La salida de puntos itera caracteres Unicode completos y obtiene su code point.
La salida \uXXXX itera unidades UTF-16, mostrando el alto y bajo sustituto de un carácter suplementario.
La decodificación valida rango, orden y pareja antes de construir texto. No interpreta \x, octal ni expresiones.
Cuándo usar notación Unicode
Ayuda a revelar la secuencia real cuando la apariencia visual es ambigua.
| Elemento | Descripción |
|---|---|
| Depurar emoji | Comprueba que no se trunquen pares. |
| Ver caracteres invisibles | Identifica espacios especiales y controles. |
| Documentación técnica | U+ identifica caracteres sin depender de una fuente. |
| Revisar API | Decodifica escapes sin ejecutar código. |
| Comparar normalización | Distingue caracteres precompuestos y combinaciones. |
Errores Unicode y seguridad
Un sustituto sin pareja es UTF-16 mal formado. Se rechaza en vez de sustituirlo silenciosamente.
El texto recuperado sigue sin ser fiable y necesita escape específico del contexto.
- U+110000 supera el máximo.
- U+D800 no es un escalar.
- \uD83D solo es inválido.
- \u{XYZ} no es hexadecimal.
- alert(1) no se ejecuta.
Unicode frente a JSON, HTML y URL
JSON añade una gramática completa; entidades HTML y porcentajes URL resuelven contextos distintos.
😀 es U+1F600, D83D DE00 en UTF-16 y F0 9F 98 80 en UTF-8.
| Elemento | Descripción |
|---|---|
| JSON | Requiere un analizador de documentos. |
| Entidades HTML | Usan & o &#x… en HTML. |
| UTF-8 | Representa puntos como uno a cuatro bytes. |