Frage
Die übliche Methode der URL-Kodierung ein Unicode-Zeichen ist, es in 2% HH-Codes aufzuteilen. ( \ u4161 => 61% 41% )
Aber, wie zeichnet Unicode bei der Decodierung? Wie Sie wissen, dass % 41% 61 ist \ u4161 vs. \ x41 \ x61 ( "AA")?
Sind 8-Bit-Zeichen, die Codierung erfordern, mit vorangestelltem % 00
Oder ist der Punkt, wird Unicode-Zeichen soll / split verloren sein?
Lösung
Nach Wikipedia :
Aktuelle Standard
Die generische URI-Syntax schreibt vor, dass neue URI-Systeme vorsehen, dass für die Darstellung von Zeichendaten in einer URI muss, in Effekt, repräsentieren Zeichen aus der unreserved Satz ohne Übersetzung, und sollten alle anderen konvertieren Zeichen-Bytes entsprechend UTF-8, und dann diejenigen Prozent-kodieren Werte. Diese Forderung war im Januar 2005 mit der Einführung Veröffentlichung RFC 3986. URI-Systeme vor diesem Datum eingeführt ist nicht betroffen.
Nicht von der aktuellen adressierte Spezifikation ist, was zu tun codierte Zeichendaten. Zum Beispiel, in Computern, Manifeste Zeichendaten in codierter Form, auf einer bestimmten Ebene, und so könnte entweder als binär behandelt werden Daten oder als Zeichendaten, wenn sein In den URI Zeichen abgebildet. Vermutlich, es liegt Schema an den URI Spezifikationen für diese Rechnung zu tragen Möglichkeit und erfordern eine oder die andere, aber in der Praxis nur wenige, wenn überhaupt, tatsächlich tun.
Nicht-Standard-Implementierungen
Es gibt eine Nicht-Standard-Codierung für Unicode-Zeichen:% uxxxx, wo xxxx ist ein Unicode-Wert dargestellt als vier hexadezimale Ziffern. Dieses Verhalten wird von keinem RFC und hat wurde vom W3C abgelehnt. Der dritte Ausgabe von ECMA-262 beinhaltet weiterhin eine escape (string) Funktion, die diese verwendet Syntax, sondern auch ein encodeURI (uri) Funktion, die in UTF-8 umwandelt und Prozent-codiert jedes Oktett.
Also, es sieht aus wie seine ganz auf die Person, um die unencode Methode zu schreiben ... Sind nicht Standards Spaß?
Andere Tipps
Was habe ich immer getan ist erste UTF-8-Unicode-Zeichenfolge es eine Reihe von 8-Bit-Zeichen zu machen, bevor Sie eine Flucht diejenigen mit% HH.
P. S. - Ich kann nur hoffen, dass die Nicht-Standard-Implementierungen (% uxxxx) sind wenige und weit zwischen
.Da URI eingeführt wurden, bevor Unicode um war, oder zumindest in breiten Gebrauch, ich denke, das ist eine sehr spezifische Umsetzung Frage. UTF-8-Codierung Ihren Text, dann entweicht dass pro normalen klingt wie die beste Idee, da diese mit einer beliebigen ASCII / ANSI-Systeme anstelle vollständig rückwärtskompatibel ist, wenn Sie die ungerade wierd Charakter oder zwei bekommen könnte.
Auf der anderen Seite, entschlüsseln, können Sie Ihren Text unescape würden, und einen UTF-8-String bekommen. Wenn jemand ein älteres System versuchen Ihnen in ASCII / ANSI einige Daten zu senden, es gibt keinen Schaden getan, das ist (fast) UTF-8 kodierten bereits.