Conversor de Texto a Unicode

Convierte texto a puntos de código Unicode, entidades HTML o secuencias de escape de JavaScript, y decodifícalos de vuelta. Compatible con emoji y planos astrales.

Convierte texto a puntos de código Unicode y viceversa. Elige entidades HTML, escapes de JavaScript o notación U+. Ambos paneles son editables y los caracteres fuera del Plano Multilingüe Básico —incluidos todos los emoji— se tratan como un único punto de código, no como pares suplentes.

Puntos de código, codificaciones y pares suplentes

Un punto de código no es un byte

Unicode asigna a cada carácter un número llamado punto de código, escrito U+ seguido de dígitos hexadecimales. A es U+0041, es U+8702 y el emoji de abeja es U+1F41D. Ese número es la identidad del carácter. Cómo se almacena —UTF-8, UTF-16, UTF-32— es una decisión aparte, y por eso esta herramienta es distinta del conversor a binario.

La trampa de los pares suplentes

Las cadenas de JavaScript son UTF-16. Los puntos de código por encima de U+FFFF se guardan como dos mitades de 16 bits llamadas par suplente. El código ingenuo que recorre con charCodeAt ve un emoji como dos valores sin sentido entre 0xD800 y 0xDFFF, y dice que "🐝".length es 2. Este conversor itera por punto de código, así que el emoji produce un único valor, U+1F41D.

Los cuatro formatos de salida

  • Entidad HTML decimalA. Funciona en cualquier documento HTML y en XML.
  • Entidad HTML hexadecimalA. Lo mismo en hexadecimal, igual que se escriben las tablas Unicode.
  • Escape de JavaScript\u0041. Para literales de cadena en el código fuente. Por encima de U+FFFF se requiere la forma con llaves \u{1F41D}, que la herramienta genera automáticamente.
  • Notación de punto de códigoU+0041. La forma usada en especificaciones y documentación.

Usos prácticos

Escapar texto no ASCII como entidades permite que sobreviva a sistemas que estropean codificaciones, como pasarelas de correo antiguas o bases de datos mal configuradas. Inspeccionar puntos de código también es la forma más rápida de diagnosticar caracteres invisibles: un espacio de ancho cero (U+200B) o un espacio duro (U+00A0) se ven igual que un espacio normal pero rompen las comparaciones de cadenas. Pega aquí el texto sospechoso y la diferencia salta a la vista.

Aviso de código abierto: implementado con String.prototype.codePointAt y String.fromCodePoint nativos de JavaScript. No se usa ninguna biblioteca de terceros.

Preguntas frecuentes

¿Por qué un emoji da un solo U+1F41D y no dos valores?
La herramienta itera por punto de código y no por unidad de código UTF-16. Los emoji están por encima de U+FFFF, así que los bucles ingenuos los parten en pares suplentes; este no.
¿En qué se diferencia del conversor a binario?
Esta herramienta muestra puntos de código, la identidad abstracta de cada carácter. La de binario muestra los bytes UTF-8 con que se almacenan. Un carácter puede ser un punto de código y tres bytes.
¿Puedo decodificar una mezcla de formatos?
Sí. El decodificador reconoce &#..;, &#x..;, \uXXXX, \u{...} y U+.... en la misma entrada, y el texto entre escapes se conserva tal cual.
¿Cómo encuentro caracteres invisibles en una cadena?
Pégala y cambia a notación U+. Los espacios de ancho cero aparecen como U+200B, los duros como U+00A0 y las marcas de orden de bytes como U+FEFF.
¿Es seguro poner entidades HTML directamente en una página?
Sí, las referencias numéricas son válidas en HTML y XML. Ten en cuenta que solo escapan los caracteres en sí; no sustituyen al escapado correcto de <, > y & en contenido no confiable.
¿Sale algo de mi navegador?
No. La conversión es manipulación de cadenas realizada localmente.