Punycode

Punycode

Punycode

Punycode (código púny) es una sintaxis de codificación usada en programación que usa una cadena Unicode que puede ser traducida en una cadena de caracteres más limitada compatible con los nombres de red. La sintáxis está publicada en Internet en el documento RFC 3492.[1] La codificación es usada como parte de IDNA, que es un sistema que habilita el uso de IDNA (iniciales de nombres de dominios internacionalizados en inglés) en todos los archivo de órdenes soportados por Unicode.

Contenido

Procedimiento de codificación

Está sección demuestra el procedimiento para la codificación Punycode mostrando como la cadena “bücher” es convertido en “bcher-kva”.

Separación de carácteres ASCII

Primero son copiados todos los caracteres ASCII son copiados directamente desde la entrada a la salida saltando sobre otros caracteres (por ejemplo: “bücher” → “bcher-”) También conocido como “Código ACE”.

  • En UTF-8: españa
  • En Punycode: xn--espaa-rta

Codificación de inserción de carácteres distintos al ASCII y códigos numéricos

Para entender la parte siguiente del proceso de codificación necesitamos comprender primero como funciona el decodificador, el mismo es una máquina de estado con dos variables de estado “i” y “n”. “I” es un índice dentro del rango de cadena que va desde cero (representando una potencial inserción al comienzo) hasta la longitud actual de la cadena extendida (representando una eventual inserción al final).

I comienza en cero mientras que “n”' comienza en 128 (el primer carácter NO-ASCII). La progresión del estado es monótonica.

Cuando un estado cambia incrementa “i” o bien si ya está en el valor máximo lo resetea a “0” e incrementa “n”. Con cada cambio de estado, el punto código señalado por “n” es o no es insertado.

Posibilidades que tiene un decodificador de saltear los códigos numéricos generados por el codificador-decodificador

Si “ü” tiene código de punto 252, se obtiene la posibilidad de insertarlo en la posición uno si es necesario saltar sobre las seis inserciones potenciales sobre cada una de los 124 códigos NO-ASCII precedentes y una posible inserción (en la posición cero) del punto de código 252. Esto es porque se necesita decirle al decodificador que saltee (6*24) + 1 = 745 inserciones posibles después de obtener la requerida.

Recodificacón de códigos numéricos como secuencias de códigos ASCII

Unicode usa enteros de longitud variable para representar estos valores. Por ejemplo, esto es como “kva” es usado para representar el codigo numérico 745. Un sistema numérico con endianness es usado para permitir códigos de lóngitud variable con delimitadores separados: un bit más bajo que una marca de umbral que es el digito más significante, por lo tanto el final del número. El valor del umbral depende de la posición en el número y también de inserciones previas, para aumentar la eficiencia. Varia correspondientemente al peso de los números.

Ejemplo

Se usa un sistema de numeración en base 36, con los caracteres de la “a” hasta la “z” representado a los números 0 a 25 y los caracteres “0” a “9” representando a los números 26 a 35,por lo tanto la cadena “kva” se correspondería a “10 21 0” (k = 10 , v =21 , a =0).

Para decodificar esta cadena de dígitos, el umbral comienza como 1 y el peso es de 1. El primer dígito es el de las unidades, 10 con un peso de 1 es igual a 10. Después de esto, el valor umbral se ajusta. En aras de la simplicidad, asumamos que es ahora 2. La segunda cifra tiene un peso de 36 menos el valor umbral anterior, en este caso, 35. Por lo tanto, la suma de los dos primeros dígitos es de 10 × 1 + 21 × 35. Desde el segundo “número” no sea inferior al valor límite de 2, hay más por venir. El peso del tercer dígito es el peso anterior 36 veces menos el nuevo valor umbral, 35 × 34. El tercer dígito en este ejemplo es 0, lo que es inferior al 2, lo que significa que es la última (más importante) parte del número. Por lo tanto “kva” representa el número 10 × 1 + 21 × 35 + 0 × 35 × 34 = 745.

Para la inserción de un segundo carácter especial en “bücher”, la primera posibilidad es “büücher” con el código “bcher-kvaa”, el segundo “bücüher” con el código “bcher-kvab”, etc. Después de “bücherü” con el código “bcher-kvae” viene “ýbücher” con el código “bcher-kvaf”, etc

Para realizar la codificación y decodificación de algoritmos simples, no se ha previsto que se impida decodificar valores UNICODE inadmisibles: sin embargo, estos deben ser controlados y detectados durante la decodificación.

Comparar el ASCII 'punycoded' presentado en [1] que incluye la representación Unicode de la cadena escrita en idioma letón “con una u macron”, y “n con cedilla”, en lugar de la base de caracteres sin marcar: [2]

Requerimientos para usar Punycode

Punycode está diseñado para trabajar con todos los archivo de órdenes, y de ser autosuficientes en la optimización de tratar de adaptarse al juego de caracteres varía dentro de la cadena como los que opera. Se está optimizando para el caso de que la cadena se compone de cero o más caracteres ASCII y además sólo caracteres de otro sistema de escritura, sino que hacer frente a cualquier cadena arbitraria Unicode. Tenga en cuenta que para usar DNS, el nombre de dominio cadena se supone que ha sido normalizada para utilizar Nameprep (para los dominios de nivel superior) filtrada con una tabla de un idioma oficialmente registrados antes de ser punycoded, y que el protocolo DNS fija los límites de las longitudes aceptables de la cadena Punycode de salida.

Referencia

Enlaces externos (en inglés)

Obtenido de "Punycode"

Wikimedia foundation. 2010.

Игры ⚽ Поможем сделать НИР

Mira otros diccionarios:

  • Punycode — ist ein im RFC 3492 standardisiertes Kodierungsverfahren zum Umwandeln von Unicode Zeichenketten in sogenannte ACE Zeichenketten, die nur noch aus alphanumerischen Zeichen bestehen, wie sie in Domains erlaubt sind. Punycode wurde entworfen, um… …   Deutsch Wikipedia

  • Punycode — is a computer programming encoding syntax by which a Unicode string of characters can be translated into the more limited character set permitted in network host names. The encoding syntax is published on the Internet in Request for Comments .… …   Wikipedia

  • Punycode — Punycode (произносится как «пуникод» или «пьюникод»)  стандартизированный метод преобразования последовательностей Unicode символов в так называемые ACE последовательности, которые состоят только из алфавитно цифровых символов, как это… …   Википедия

  • Punycode — (littéralement « code chétif ») est une syntaxe de codage définie dans la RFC 3492 et conçue pour être utilisée en adéquation avec les noms de domaines internationalisés dans les applications les supportant (cf RFC 3490). Sommaire 1 L… …   Wikipédia en Français

  • Punycode — noun A mapping from Unicode to the simpler ASCII character set, intended for the representation of international domain names where Unicode is not available …   Wiktionary

  • Punycode — ● np. m. ►NORM►CHAR Syntaxe de codage de caractères Unicode en caractères ASCII (et réciproquement), défini par la RFC 3492, dans le cadre de l utilisation des IDNA …   Dictionnaire d'informatique francophone

  • Internationalized domain name — An internationalized domain name (IDN) is an Internet domain name that contains one or more non ASCII characters. Such domain names could contain letters with diacritics, as required by many non English languages, or characters from non Latin… …   Wikipedia

  • ASCII Compatible Encoding — Die Artikel Punycode und Internationalizing Domain Names in Applications überschneiden sich thematisch. Hilf mit, die Artikel besser voneinander abzugrenzen oder zu vereinigen. Beteilige dich dazu an der Diskussion über diese Überschneidungen.… …   Deutsch Wikipedia

  • IDNA — Die Artikel Punycode und Internationalizing Domain Names in Applications überschneiden sich thematisch. Hilf mit, die Artikel besser voneinander abzugrenzen oder zu vereinigen. Beteilige dich dazu an der Diskussion über diese Überschneidungen.… …   Deutsch Wikipedia

  • Internationalized Domain Name — Die Artikel Punycode und Internationalizing Domain Names in Applications überschneiden sich thematisch. Hilf mit, die Artikel besser voneinander abzugrenzen oder zu vereinigen. Beteilige dich dazu an der Diskussion über diese Überschneidungen.… …   Deutsch Wikipedia

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”