IDNA-Implementation in JS
Christian Kruse
- javascript
Hoi z'samme,
ich habe eine IDNA-Implementation in JavaScript gebaut:
Um einz klarzustellen: die Implementation macht keinen Syntax-Check für
Domains, dass ist nicht Aufgabe von IDNA, sondern es prüft, ob der
übergebene Domain-Name korrekt im Sinne von IDNA ist. Das bedeutet:
– Nameprep wird drüberlaufen gelassen
– Punycode wird drüberlaufen gelassen
– Die einzelnen Labels werden im Sinne von IDNA korrekt kodiert
Man kann also damit den Hostnamen in die ASCII- und/oder die
Unicode-Darstellung umwandeln. Das ganze wird Teil einer umfangreicheren
Bibliothek zur Überprüfung von URLs per JavaScript ;-)
Der Nameprep-Teil basiert zu grossen Teilen auf einer fertigen
Implementation von Mark Davis, der so freundlich war, seinen Code unter
der ICU-Lizenz zur Verfügung zu stellen.
Testet das Teil mal auf Herz und Nieren und schreibt, was ihr davon
haltet ;)
Grüße,
CK
Moin!
Um einz klarzustellen: die Implementation macht keinen Syntax-Check für
Domains, dass ist nicht Aufgabe von IDNA, sondern es prüft, ob der
übergebene Domain-Name korrekt im Sinne von IDNA ist. Das bedeutet:– Nameprep wird drüberlaufen gelassen
– Punycode wird drüberlaufen gelassen
– Die einzelnen Labels werden im Sinne von IDNA korrekt kodiert
Ich halte es ein klein wenig für fragwürdig, warum die Ergebnisse des "to ASCII" Großbuchstaben im "Umlautteil" hervorbringen, obgleich Domainnamen case-insensitive sind.
Ansonsten sind mir keine Auffälligkeiten begegnet. Allerdings wird das ganze Dilemma der Umlautdomains hier deutlich: Mehr als die Wandlung von "hellö-wörld.de" nach "xn--hell-wrld-37AC.de" passiert nicht - diese Konversion aber allen DNS-suchenden Clients aufzubürden war der Schwachsinn des Jahrhunderts.
- Sven Rautenberg
Hi,
diese Konversion aber allen DNS-suchenden Clients aufzubürden war der Schwachsinn des Jahrhunderts.
Also ich finde die Einführung der Umlaut-Domains an sich noch viel schwachsinniger ;-)
cu,
Andreas
你好 Sven,
Um einz klarzustellen: die Implementation macht keinen Syntax-Check für
Domains, dass ist nicht Aufgabe von IDNA, sondern es prüft, ob der
übergebene Domain-Name korrekt im Sinne von IDNA ist. Das bedeutet:– Nameprep wird drüberlaufen gelassen
– Punycode wird drüberlaufen gelassen
– Die einzelnen Labels werden im Sinne von IDNA korrekt kodiertIch halte es ein klein wenig für fragwürdig, warum die Ergebnisse des "to
ASCII" Großbuchstaben im "Umlautteil" hervorbringen, obgleich Domainnamen
case-insensitive sind.
Das war ein kleiner Bug bei der case_flags behandlung, danke, ist gefixed ;)
Allerdings wird das ganze Dilemma der Umlautdomains hier deutlich: Mehr
als die Wandlung von "hellö-wörld.de" nach "xn--hell-wrld-37AC.de"
passiert nicht diese Konversion aber allen DNS-suchenden Clients
aufzubürden war der Schwachsinn des Jahrhunderts.
Das macht im Idealfall die Resolver-Bibliothek, die Applikation hat damit
dann wenig zu tun ;) Sie muss natürlich trotzdem von wissen und deshalb
doch die ganze Chause implementieren, weil sie ja irgendwie die
syntaktische Korrektheit sicherstellen muss…
Vor allem nervig ist, dass von 6627 Zeilen, die die Implementation
insgesamt hat, allein 5652 Zeilen Zeichentabellen sind…
再见,
克里斯蒂安
hallo CK,
ich habe eine IDNA-Implementation in JavaScript gebaut:
http://wwwtech.de/idna/
Wärs nicht sinnvoll, auf dieser Seite noch einen kurzen Text zu schreiben, was das Teil eigentlich tut und wozu es eventuell was nutzt?
Testet das Teil mal auf Herz und Nieren und schreibt, was ihr davon
haltet ;)
Naja, es tut seine Arbeit. Die Zielsetzung bedarf halt noch einer Erläuterung. Nimm eine fiktive Domain "ürks.de" - die Schaltfläche "to Unicode" bewirkt anscheinend gar nix. Die Schaltfläche "to ASCII" wandelt die Eingabe nach "xn--rks-goA.de" um. Klasse, sieht nett aus. Und nun weiter?
Grüße aus Berlin
Christoph S.
你好 Christoph,
ich habe eine IDNA-Implementation in JavaScript gebaut:
http://wwwtech.de/idna/Wärs nicht sinnvoll, auf dieser Seite noch einen kurzen Text zu
schreiben, was das Teil eigentlich tut und wozu es eventuell was nutzt?
Nein, das habe ich ja hierher geschrieben.
Nimm eine fiktive Domain "ürks.de" - die Schaltfläche "to Unicode"
bewirkt anscheinend gar nix.
Natürlich nicht – das ist ja bereits die Unicode-Darstellung.
Die Schaltfläche "to ASCII" wandelt die Eingabe nach "xn--rks-goA.de" um.
Klasse, sieht nett aus. Und nun weiter?
Das ist die ASCII-Darstellung einer Umlaut-Domain. Das ist die Aufgabe
von IDNA: Kodierung der Labels einer Domain, so dass alle Unicode-Zeichen
in ASCII dargestellt werden können und natürlich die Umkehrung dieser
Kodierung.
再见,
克里斯蒂安
Hallo Freunde des gehobenen Forumsgenusses,
Testet das Teil mal auf Herz und Nieren und schreibt, was ihr davon
haltet ;)
Konvertiere mal den String "ÄÖÜ" ein paar Mal nach ASCII und wieder zurück,
das ergibt lustige Zeichen, die ich noch nie gesehen habe ;-)
Gruß
Alexander Brock
你好 Alexander,
Testet das Teil mal auf Herz und Nieren und schreibt, was ihr davon
haltet ;)Konvertiere mal den String "ÄÖÜ" ein paar Mal nach ASCII und wieder
zurück, das ergibt lustige Zeichen, die ich noch nie gesehen habe ;-)
Danke – Fehler behoben. Ich hatte die Divisionen nicht richtig behandelt,
ich habe Float-Divisionen gemacht aber Integer-Divisionen gewollt :)
再见,
克里斯蒂安
Lieber Christian,
ich habe eine IDNA-Implementation in JavaScript gebaut:
Du hast einfach zuviel Zeit! ;-)
so short
Christoph Zurnieden
PS:
»»Kommt ein Vektor zur Drogenberatung: "Hilfe, ich bin linear abhaengig!"
Man sagt, das läge an den vielen Galois-Felder rauchenden primitiven Polynomen und es hätte auch schon so einige Asymp-Tote gegeben! Das nimmt doch gar kein Ende, wenn man die nicht schnell an die kurze Markov-Kette legt -- mit einem dicken Levenshtein dran! -- und sich Langres[1] genug im Hilbertraum abkühlen läßt!
CZ
[1] Na, wer ist hier gemeint? ;-)
你好 Christoph,
ich habe eine IDNA-Implementation in JavaScript gebaut:
Du hast einfach zuviel Zeit! ;-)
Hehe, kann man zuviel Zeit haben? ;)
»» Kommt ein Vektor zur Drogenberatung: "Hilfe, ich bin linear abhaengig!"
Man sagt, das läge an den vielen Galois-Felder rauchenden primitiven
Polynomen und es hätte auch schon so einige Asymp-Tote gegeben! Das nimmt
doch gar kein Ende, wenn man die nicht schnell an die kurze Markov-Kette
legt -- mit einem dicken Levenshtein dran! -- und sich Langres[1] genug
im Hilbertraum abkühlen läßt!
CZ[1] Na, wer ist hier gemeint? ;-)
Keine Ahnung, sags mir ;) Das andere habe ich herauslesen können, aber zu
[1] fällt mir gerad nix ein *g*
再见,
克里斯蒂安
Hi,
Du hast einfach zuviel Zeit! ;-)
Hehe, kann man zuviel Zeit haben? ;)
Ja, kann man, denn dann hätte ich meine eigentliches Anliegen -- die Frage, ob mit Absicht keine Fehlermeldung mehr kommt, wenn man zuviel geschrieben hat (ist mir bei diesem Post passiert, als ich probierte, ob es nicht vielleicht doch paßt) -- auch vorgebracht, statt die Zeit mit dem Zusammenbasteln eines recht flachen Scherz auf Deine Signatur zu verplempern.
Tja, so geht's einem ;-)
legt -- mit einem dicken Levenshtein dran! -- und sich Langres[1] genug
aber zu [1] fällt mir gerad nix ein *g*
Denis Diderot (*Langres 5.10.1713 - †Paris 31.7.1784)
Tsk, tsk, tsk!
;-)
so short
Christoph Zurnieden
你好 Christoph,
Du hast einfach zuviel Zeit! ;-)
Hehe, kann man zuviel Zeit haben? ;)
Ja, kann man, denn dann hätte ich meine eigentliches Anliegen -- die
Frage, ob mit Absicht keine Fehlermeldung mehr kommt, wenn man zuviel
geschrieben hat
Der Fehler ist schon lange, lange gefixed. Es müsste nur mal ein gewisser
Herr Seiler mal ein Update auf eine aktuelle Version machen… ;)
再见,
克里斯蒂安
Hi,
Der Fehler ist schon lange, lange gefixed. Es müsste nur mal ein gewisser
Herr Seiler mal ein Update auf eine aktuelle Version machen… ;)
es ist doch immer wieder sehr erquicklich wenn man jemanden hat auf den man alle Schuld abwälzen kann, gelle? ;-)
Soll ich jetzt in euer Bugzilla eintragen:"Einspielung der Bugfixes noch nicht erfolgt"?
so short
Christoph Zurnieden