2008-10-01 6 views
6

Die übliche URL-Kodierung eines Unicode-Zeichens besteht darin, es in 2% HH-Codes aufzuteilen. (\ u4161 =>% 41% 61)Unicode-URL-Dekodierung

Aber, wie unterscheidet Unicode beim Dekodieren? Woher weißt du, dass % 41% 61 ist \ u4161 vs \ x41 \ x61 ("Aa")?

Sind 8-Bit-Zeichen, die codiert werden müssen, vorangestellt von % 00?

Oder ist der Punkt, an dem Unicode-Zeichen verloren gehen sollen?

Antwort

7

Nach Wikipedia:

Current Standard

Der generischen Aufträge URI-Syntax, die neuen URI-Systeme das muss für die Darstellung von Zeichendaten in einer URI bereitzustellen, in Effekt, Zeichen darstellen von der nicht reservierten Satz ohne Übersetzung, und sollte alle anderen Zeichen in Bytes nach UTF-8 konvertieren und dann prozent-kodieren diese Werte. Diese Anforderung wurde im Januar 2005 mit der Veröffentlichung von RFC 3986 eingeführt. URI-Schemas , die vor diesem Datum eingeführt wurden, sind nicht betroffen.

Nicht adressiert durch die aktuelle Spezifikation ist, was mit codierten Zeichendaten zu tun. Zum Beispiel in Computern, Zeichendaten Manifeste in codierter Form, auf einer bestimmten Ebene, und so könnte entweder als binäre Daten oder als Zeichendaten behandelt werden, wenn URI-Zeichen zugeordnet werden. Vermutlich ist es bis zu dem URI-Schema Spezifikationen möglich, diese Möglichkeit zu berücksichtigen und einen oder die anderen zu fordern, aber in der Praxis tun wenige, wenn überhaupt, tatsächlich .

Nicht-Standard-Implementierungen

Es gibt eine Nicht-Standard-Codierung für Unicode-Zeichen:% uxxxx, wo xxxx ein Wert als vier hexadezimale Ziffern dargestellt Unicode ist. Dieses Verhalten wird von keinem RFC angegeben und wurde von dem W3C zurückgewiesen. Die dritte Auflage von ECMA-262 umfasst weiterhin eine escape (string) Funktion, die diese Syntax verwendet, sondern auch ein encodeURI (uri) Funktion, die in UTF-8 konvertiert und Prozent-codiert jedes Oktett.

So, es sieht aus wie es ganz an der Person ist, die die Unencode-Methode schreibt ... Sind Standards nicht Spaß?

0

Was ich immer getan habe, ist zuerst UTF-8 kodieren Sie eine Unicode-Zeichenfolge, um es eine Reihe von 8-Bit-Zeichen vor der diese mit% HH.

P.S. - Ich kann nur hoffen, dass die Nicht-Standard-Implementierungen (% uxxxx) selten sind.

0

Da URIs vor der Einführung von Unicode eingeführt wurden oder zumindest weit verbreitet sind, stelle ich mir vor, dass dies eine sehr implementationsspezifische Frage ist. UTF-8 codiert Ihren Text, dann entgeht das per normal klingt wie die beste Idee, da das vollständig abwärtskompatibel mit allen vorhandenen ASCII/ANSI-Systemen ist, obwohl Sie vielleicht ein oder zwei merkwürdige Zeichen erhalten.

Am anderen Ende, entschlüsseln Sie Ihren Text und erhalten eine UTF-8-Zeichenfolge. Wenn jemand, der ein älteres System verwendet, versucht, Ihnen Daten in ASCII/ANSI zu senden, ist das kein Schaden, das ist (fast) schon UTF-8-codiert.

+0

Dies ist genau das, was verwendet werden sollte. Die Charaktere, die du erwähnst, mögen merkwürdig erscheinen, aber keiner von ihnen wird Kontrollcharakter sein (so funktioniert UTF-8) und das ist wirklich gut. –