Conversor de Punycode (nombres de dominio internacionalizados)

Convierte nombres de dominio internacionalizados (IDN) que contienen caracteres no ASCII, como el japonés, hacia y desde Punycode (una codificación compatible con ASCII).

Consejos de uso

  • Los nombres de dominio compuestos por varias etiquetas (partes separadas por `.`) también se procesan automáticamente etiqueta por etiqueta: las que solo contienen caracteres ASCII se dejan tal cual, y únicamente las que contienen caracteres no ASCII se convierten con el prefijo `xn--`.
  • En el modo "Punycode → Nombre de dominio", solo se decodifican las etiquetas que incluyen el prefijo `xn--`; las demás se mantienen sin cambios.
  • Esta misma lógica de conversión puede aplicarse no solo a nombres de dominio, sino también a la parte que sigue al `@` en una dirección de correo electrónico (la parte del dominio).
  • Cuando escribes un nombre de dominio internacionalizado en la barra de direcciones del navegador, la mayoría de los navegadores lo convierten internamente a Punycode antes de realizar la resolución DNS.

Preguntas frecuentes

Punycode (RFC 3492) es un esquema de codificación que convierte nombres de dominio que contienen caracteres Unicode —japonés, chino, árabe, etc.— conocidos como nombres de dominio internacionalizados (IDN), en cadenas formadas únicamente por los caracteres ASCII que el DNS puede procesar. La etiqueta resultante lleva el prefijo `xn--`.

El DNS (Domain Name System) se diseñó originalmente pensando únicamente en caracteres ASCII, por lo que los nombres de dominio con caracteres japoneses o emojis no pueden resolverse tal cual. Punycode convierte los nombres de dominio con caracteres no ASCII en cadenas ASCII, lo que permite los dominios internacionalizados sin modificar la infraestructura DNS existente.

`xn--` se conoce como el "prefijo ACE" (ASCII Compatible Encoding), y le indica al DNS y al software compatible que esa etiqueta es un dominio internacionalizado codificado en Punycode. Cuando los navegadores detectan este prefijo, normalmente lo decodifican y muestran al usuario la cadena Unicode original.

Sí, se trata de una técnica de phishing conocida como "ataque homógrafo IDN". Se han reportado casos en los que un dominio Punycode (por ejemplo, `xn--80ak6aa92e.com`) codificado con caracteres casi idénticos visualmente —como la "а" cirílica frente a la "a" latina— se usó para suplantar un dominio legítimo. Los principales navegadores mitigan esto mostrando la forma Punycode sin decodificar (la cadena que empieza por `xn--`) en la barra de direcciones cuando detectan una combinación sospechosa de caracteres.
ツールくん

A propósito — la historia detrás de cómo "gato" y "日本語" se convirtieron en nombres de dominio

El debate sobre los nombres de dominio internacionalizados (IDN) comenzó a finales de los años noventa, pero la estandarización tardó mucho tiempo en llegar. Se propusieron varios enfoques para manejar caracteres no ASCII sin modificar el núcleo del DNS, y finalmente se adoptó el enfoque Punycode —codificar y decodificar en la capa de aplicación (del lado del cliente) sin tocar el servidor DNS en sí—, estandarizado como RFC 3492 en 2003.

Se dice que el nombre "Punycode" proviene de una combinación de "Unicode" y "an amusing pun" (un juego de palabras gracioso), y el algoritmo en sí es una especialización, orientada a los nombres de dominio, de un método de codificación más general llamado Bootstring (una técnica de propósito general ideada por investigadores de IBM para codificar cualquier conjunto de caracteres en un conjunto restringido). El hecho de que incluso el origen del nombre "Punycode" sea una especie de broma refleja bien el sentido del humor propio de la comunidad de desarrolladores.

Hoy en día se registran y utilizan realmente nombres de dominio en muy diversos idiomas y símbolos —dominios japoneses (`.jp`) e incluso dominios con emojis (existen ejemplos reales como `💩.la`)—, pero detrás de todos ellos siempre se lleva a cabo este proceso de conversión Punycode. Incluso el elegante dominio japonés que se muestra en la barra de direcciones del navegador se intercambia con el servidor DNS como una sencilla cadena ASCII que comienza con `xn--`.