Domainnamen mit Akzenten, Umlauten, etc.

Einer der ersten Dienste im Internet war das „Domain Name Service“ (DNS), das zu einer Zeit entstand, als niemand nur vom WWW-Hype träumen konnte und daher seinen Zeichensatz auf die Kleinbuchstaben a - z, die Ziffern 0 - 9 und den Bindestrich beschränkte.

Inzwischen hat sich ja schon lange gezeigt, daß das Internet nicht englischsprachig, sondern multilingual ist, der Wunsch nach IDN - „Internationalized Domain Names“ wurde somit immer stärker, vor allem auch, weil viele andere Anwendungen ja inzwischen viele Sprachen unterstützen.
Bei der Entscheidung, wie diese Internationalisierung vor sich gehen soll, war von Anfang an klar, daß der ASCII-Zeichensatz von Unicode (mit ingesamt 95.221 Zeichen) abgelöst werden sollte - aber wie? Entweder, indem das gesamte DNS-System auf Unicode umgestellt wird oder indem Zeichen in Unicode in einem definierten Verfahren in ASCII-Zeichenketten umgewandelt werden.

Man entschied sich für das 2. Verfahren, das dann 2-stufig angelegt wird:

  1. Nameprep: die Unicode-Zeichen werden normalisiert
    d. h. es werden z. B. Großbuchstaben in Kleinbuchstaben umgewandelt; Zeichen, die mehrere Schreibweisen erlauben (so ist z. B. ein „ü“ in Unicode als „ü“ oder als „u + ¨“ schreibbar), vereinheitlicht.
  2. Punnycode: der normalisierte Unicode-String wird in einen ACE-String umgewandelt.
    Das geschieht durch eine besondere Kombination von ASCII-Zeichen (xn--), die mit ziemlicher Sicherheit noch nie oder äßerst selten im DNS verwendet wurde.
    Diese Umwandlung ist nicht trivial, weil für jeden Teil eines DNS-Eintrags maximal 63 ASCII-Zeichen verwendet werden dürfen und einzelne Sprachen vor anderen nicht bevorzugt werden sollten

Diese Methode hat folgende Vorteile:

  • am bestehenden Nameservice ist gar nichts zu ändern
  • das Verfahren funktioniert für kompatible Clients völlig transparent
  • bei alten Clients kann man zumindest über den Punny-Code den Dienst trotzdem erreichen

Beispiel

www.bücher.at und www.xn--bcher-kva.at sollten in modernen Browsern beide gleichwertig funktionieren, in alten Browsern zumindest die 2. Version