Punycode

De Seobility Wiki
Saltar a: navegación, buscar

¿Qué es el punycode o código puny?

Punycode
Imagen: Punycode - Autor: Seobility - Licencia: CC BY-SA 4.0

El punycode es un sistema de codificación estándar desarrollado para su uso en los nombres de dominio internacionalizados. Este se encarga de codificar y representar los caracteres unicode en la resolución de los hostnames, para hacerlo compatible en un formato de código ASCII (American Standard Code for Information Interchange o Código estándar americano para intercambio de información).

Esto significa que, por ejemplo, un nombre de dominio se puede componer por una cadena unicode de caracteres chinos y, gracias al punycode, estos se codifican en un formato de caracteres referenciables dentro del código estándar americano.

Como el formato unicode representa más que un conjunto de caracteres internacionales, el punycode se puede emplear incluso para permitir que los nombres de dominio utilicen emojis, aunque esto no es un estándar ampliamente compatible, puesto a que solo hay un subconjunto limitado de dominios de nivel superior que aceptan a los emojis en los nombres de dominio.

Antecedentes del Punycode

La tecnología que impulsa al internet se remonta a la década de 1960 y fue desarrollada en Estados Unidos, razón por la cual el código estándar americano se convirtió, históricamente, en el estándar de codificación predeterminado en la mayoría de computadoras y servidores.

En ese momento, el código ASCII estaba limitado a solo los 128 caracteres del alfabeto latino, sus números y signos de puntuación. Por lo tanto, no podía codificar caracteres de otros sistemas de escritura como el Kanji, el Hangul o el Cirílico, creando una barrera para quienes no podían leer el alfabeto latino. Esto dio lugar a que las empresas de esos países no pudieran utilizar un nombre de dominio localizable.

Más adelante, apareció el unicode como un estándar de codificación expandible y con miras a abarcar la mayor cantidad de caracteres diferentes como fuera posible. Desde entonces, el código estándar americano ha quedado obsoleto, aunque los softwares y hardwares antiguos aún se sigan ejecutando con este sistema.

Así pues, para cerrar la brecha entre los sistemas de codificación modernos y los antiguos, como el ASCII o el Unicode, se creó el Punycode.

Ejemplos de uso del Punycode

El punycode es de utilidad para el procesamiento de nombres de dominio internacionales.

Por ejemplo, en Corea se escribe en Hangul, pero este tipo de caracteres no pueden codificarse propiamente con el estándar ASCII. Es aquí donde el punycode entra en juego, ya que toma las cadenas codificadas del unicode y las convierte en algo legible y apto para el formato estándar americano.

Por este motivo, antes de que existiera el punycode, las compañías y las operadoras de servicios en numerosos mercados como el coreano, tenían que adaptar sus marcas para que se ajustaran a todas las restricciones ASCII. Por ejemplo, debían modificar un carácter como “날씨” (que significa “agua” en coreano) por algo legible al alfabeto latino. Como resultado de esto, una website tenía que transformar todo su dominio a algo como: www.agua.co.kr.

De manera que la llegada del punycode cambió este panorama y habilitó el uso de nombres de dominio como “www.날씨.co.kr”, permitiendo a las marcas trabajar con sus propias identidades y localizar sus productos en sus mercados objetivo donde no se escribe con el alfabeto latino.

Además, la compatibilidad del punycode también funciona con los dominios de nivel superior, haciendo posible que los hostnames compuestos por caracteres no pertenecientes al estándar ASCII, puedan serlo.

Así pues, si tenemos una cadena de caracteres como “날씨”, el punycode la convertiría en algo así: xn--i20bj30b. Es decir, la convierte en una cadena única que permite al sistema ASCII leer e interpretar los caracteres que no están dentro su formato estándar. Entonces, contextualizando las URLs, una dirección: “www.날씨.co.kr” se reinterpretaría así: “www.xn--i20bj30b.co.kr”.

Vale la pena destacar que la mayoría de navegadores van a mostrar el resultado del punycode, en lugar de la dirección original, como una manera de prevenir los ataques de phishing que puedan ocurrir si alguien registra o compra un dominio resultante de la cadena codificada de punycode, pues algunos se parecen muchísimo a los nombres originales de las grandes marcas, solo que se intercambia un carácter por otro muy similar o de otro conjunto, haciéndolo completamente indetectable.

¿Cómo funciona el punycode?

Desde un punto de vista más técnico, el punycode funciona como una instancia de una cadena de algoritmo de arranque, el cual permite la representación de un conjunto arbitrario de caracteres que se pueden usar en sinergia con otro conjunto limitado de caracteres.

Esto ocurre mediante la interpretación de cualquier cadena que se le remita y también a través de un análisis que busca aquellos caracteres no pertenecientes al sistema de código ASCII. Luego de una serie de pasos, finalmente se crea la cadena compatible con el sistema estándar americano.

Para conseguirlo, primero se normalizan todos los caracteres convirtiéndolos en minúsculas cuando corresponda. Seguidamente, se busca la compatibilidad de los caracteres, ignorando cualquier carácter que se encuentre dentro del conjunto ASCII; sin embargo, aquellos que no pertenezcan a dicho estándar se eliminan del texto y se añade un guion al final de la cadena.

Entonces, si se encuentra algún carácter no estándar, se adiciona el prefijo “xn–” a la cadena, para presentar una codificación compatible con ASCII (ACE, por sus siglas en inglés) y también da a entender que el guion adjunto debe ser interpretado por medio de un punycode y no como parte de la misma cadena.

Finalmente, el punycode analiza los caracteres que no son ASCII y agrega una cadena al guion que usa los caracteres del estándar americano para dictar qué caracteres deberían representarse y donde deben posicionarse dentro de la cadena, asegurando que el resultado final no exceda los 63 caracteres.

Ampliar conocimientos

Sobre las autoras y autores:
Seobility S
El equipo de Seobility Wiki está formado por expertas y expertos SEO, profesionales del marketing digital y especialistas en negocios con experiencia en SEO, marketing online y desarrollo web. Todos nuestros artículos pasan por un proceso editorial de varios niveles para proporcionarte la mejor calidad posible e información relevante y de utilidad. Conoce a la gente que hay detrás de la Wiki de Seobility.

Contenidos relacionados