Escape / desescape Unicode

Pega texto y los escapes aparecen al instante — o pega \u4F60 para recuperar los caracteres. Sin botones, sin subir nada.

Cómo se usa

  1. Elige Escapar o Desescapar — la caja de entrada se queda exactamente igual, así que puedes mirar el mismo texto desde ambos lados sin volver a escribirlo.
  2. Escapar: escribe o pega texto y los escapes aparecen de inmediato. Elige la sintaxis que use tu lenguaje de destino: \uXXXX (Java, JSON, .properties — los caracteres fuera del BMP se convierten en pares sustitutos UTF-16), \u{X} (JavaScript ES6, Rust, Swift, Ruby, PHP), \UXXXXXXXX (Python, C, Go, C#) o U+XXXX (la notación estándar de Unicode).
  3. Elige el rango: «Solo no ASCII» (lo predeterminado) escapa todo lo que está por encima de U+007F y deja intactos el ASCII, los espacios y los saltos de línea; «Todos los caracteres» escapa cada punto de código, de modo que la salida es ASCII puro.
  4. Desescapar: pega texto con escapes para recuperar los caracteres. La línea sobre el resultado indica cuántos caracteres se decodificaron y, si algún fragmento no se pudo leer, cuál era y dónde estaba.

Ejemplo

Entrada

Café "naïve" 😀

Escapado

Caf\u00E9 "na\u00EFve" \uD83D\uDE00

«é» no tiene forma ASCII, así que se convierte en \u00E9. «😀» es U+1F600, por encima del BMP, así que la sintaxis \uXXXX lo escribe como el par sustituto \uD83D\uDE00. Cambia a \u{X} y el mismo texto da Caf\u{E9} "na\u{EF}ve" \u{1F600}; \UXXXXXXXX da …\U0001F600; U+XXXX da CafU+00E9 "naU+00EF ve" U+1F600 — el doble espacio tras é es el separador más el espacio que ya había en el texto. Todos ellos se pegan de vuelta en Desescapar sin cambios.

Reglas, límites y problemas conocidos

  • Solo se reconocen cuatro sintaxis: \uXXXX (exactamente 4 dígitos hexadecimales), \u{X} (1–6 dígitos), \UXXXXXXXX (exactamente 8 dígitos) y U+XXXX (1–6 dígitos, U+ en mayúscula). No se admiten %uXXXX, \x{X}, \X de CSS ni \N{NAME}; las referencias HTML como 你 pertenecen a la herramienta de entidades HTML.
  • \uXXXX está fijada a 4 dígitos: \u12 y \u12345 no se leen como \uXXXX — \u12345 se decodifica como U+1234 seguido de un «5» literal. Escribe \u{…} cuando necesites de 1 a 6 dígitos.
  • \uXXXX no tiene límite de carácter: \u4F60abc se decodifica como 你abc, y U+4F601 es el punto de código U+4F601 (5 dígitos, válido), no U+4F60 seguido de «1».
  • En U+XXXX, un único espacio tras un punto de código es un separador, no contenido: U+4F60 hello se decodifica como 你hello. Esta herramienta escribe un espacio tras cada token U+ (excepto al final), así que su propia salida se puede volver a leer; los tokens escritos a mano sin espacios se pegan a los dígitos hexadecimales siguientes y se cuentan como no reconocidos.
  • Los pares sustitutos solo aparecen en la sintaxis \uXXXX, porque esa es la representación de Java/JSON; \u{1F600}, \U0001F600 y U+1F600 escriben el punto de código directamente. Un sustituto alto no seguido de un sustituto bajo se deja como se escribió y se cuenta como no reconocido — nunca se sustituye por «�».
  • Los puntos de código por encima de U+10FFFF y el propio rango de sustitutos se rechazan igual: se dejan como se escribieron y se cuentan, sin sustituirse en silencio.
  • El rango «Solo no ASCII» no escapa una barra invertida literal: si tu texto ya contiene \u4f60, Desescapar lo leerá como un escape. Esa ambigüedad es inherente al rango — elige «Todos los caracteres» cuando las barras invertidas importen.
  • La decodificación es una sola pasada: \u005Cu4F60 se convierte en el texto literal \u4F60, no en 你. Vuelve a pegar si de verdad necesitas dos capas.
  • Los caracteres de control válidos se decodifican como ellos mismos: \u0000 da U+0000 (invisible, pero no un error), así que la salida puede contener caracteres que no ves.
  • Los escapes de cadena como \n y \t se dejan como texto normal y no se cuentan, y los literales de cadena JSON completos son otra cuestión. Las codificaciones URL, HTML y Base64 también son herramientas aparte.
  • Hasta 100.000 caracteres; por encima aparece un error en lugar de un resultado truncado. Por encima de 20.000 caracteres el resultado se actualiza unos 0,6 s después de que dejes de escribir.
  • Sin subida de archivos, sin historial y sin enlace para compartir que transporte tu entrada: todo se ejecuta en tu navegador y el texto nunca sale de la página.

Lo que suele necesitarse después, una vez escapado o desescapado el texto.