Punycode

Punycode

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 Domainnamen aus Unicodezeichen eindeutig und umkehrbar durch ASCII-Zeichen darzustellen.

Inhaltsverzeichnis

Motivation

Wichtigste Motivation für die Einführung von Punycode war die Tatsache, dass in dem etablierten Domain Name System nur Namen zugelassen sind, die aus den 26 lateinischen Buchstaben, den Ziffern 0 bis 9, sowie dem Bindestrich bestehen. Für die englische Sprache war dies ausreichend, doch die meisten anderen Sprachen enthalten weitere Zeichen – die deutsche Sprache beispielsweise die Umlautbuchstaben ä, ö und ü sowie das ß. Um beliebige Texte aus derartigen Sprachen verarbeiten zu können, wurde 2003 das Punycode-Verfahren eingeführt.

Soll ein Text an ein System übergeben werden, das nur ASCII beherrscht, so wird er zuvor per Punycode in ASCII umgesetzt. Zu beachten ist, dass sich in vielen Fällen der resultierende Text verlängert. Soll umgekehrt dieser Text aus dem ASCII-System entnommen werden, so wird er per Punycode in die ursprüngliche Form zurückübersetzt. Enthält ein Text keinerlei Sonderzeichen, so wird er durch dieses Verfahren nicht verändert.

Das Punycode-Konvertierungsverfahren wurde unter Wahrung folgender Gesichtspunkte festgelegt:

  • Vollständigkeit: Jeder Name kann umgesetzt werden
  • Eindeutigkeit: Jedem Namen ist genau eine Umsetzung zugeordnet
  • Reversibilität: Jeder umgesetzte Name kann zurückkonvertiert werden
  • Effizienz: Der umgesetzte Name ist nicht wesentlich länger als der Ausgangsname
  • Einfachheit: Das Verfahren ist relativ einfach zu implementieren
  • Lesbarkeit: Der umgesetzte Name bleibt im Wesentlichen lesbar, da die Zeichen a bis z nicht verändert werden

Regeln der Umwandlung

Beispiele
Zeichenkette Codierung
abcdef abcdef
abæcdöef abcdef-qua4k
schön schn-7qa
ยจฆฟคฏข 22cdfh1b8fsa
74h

Als Basiszeichen gelten im folgenden die Buchstaben a bis z und die Ziffern 0 bis 9 (Groß- und Kleinschreibung spielt keine Rolle). Zusammen mit dem Bindestrich „-“ als Trennzeichen stellen diese 37 Zeichen die einzig gültigen Zeichen in einem nach Punycode kodierten Text dar.

Enthält die zu konvertierende Zeichenkette

  • nur Basiszeichen, so wird sie nicht verändert.
  • sowohl Basiszeichen als auch Nicht-Basiszeichen, werden alle Basiszeichen unter Beibehaltung ihrer Reihenfolge aufgeführt und schließlich die kodierten Nicht-Basiszeichen durch einen Bindestrich getrennt angehängt.
  • nur Nicht-Basiszeichen, so ist das Umwandlungsergebnis nur deren Codefolge, ohne Trennzeichen

Um die resultierende Zeichenkette möglichst kompakt zu gestalten, werden die Sonderzeichen nicht „eins-zu-eins“, sondern nach dem Punycode-Verfahren kodiert. Die Nicht-Basiszeichen werden zuerst nach ihrem Zahlenwert sortiert. Die Differenz zwischen den Werten der einzelnen Zeichen wird mit der jeweiligen Position in der ursprünglichen Zeichenkette zur Bildung einer Zahl verwendet. Diese Zahl wird anschließend durch die 37 Basiszeichen dargestellt und an den kodierten Text angehängt. Die Details zu diesem Verfahren sind in RFC 3492 festgelegt, wo auch eine Referenzimplementierung in der Programmiersprache C für die Kodierung und die Dekodierung, sowie zahlreiche Beispiele enthalten sind.

Bei der Bildung von Domainnamen nach dem Internationalizing Domain Names in Applications-Standard (IDNA) wird bei Vorhandensein von Nicht-Basiszeichen ein „xn--“ Präfix vorangestellt, und andernfalls (nur Basiszeichen) kommt Punycode nicht zur Anwendung.

Browser mit Punycode-Unterstützung

Da Punycode vor allem bei Umlautdomains für Websites auf Zustimmung stieß, wurde dessen Implementierung, obwohl im Prinzip keine Verbindung zum Web besteht, zunächst in Browsern durchgeführt. Browser mit Punycode-Unterstützung sind zum Beispiel:

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем написать курсовую

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Punycode — Saltar a navegación, búsqueda 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… …   Wikipedia Español

  • 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

Share the article and excerpts

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