Wie dekodiere ich eine Zeichenkette mit Unicode?
Ich bin mir nicht sicher, was dies heißt also, ich habe Mühe, nach ihm zu suchen. Wie kann ich Dekodieren einer Zeichenkette mit unicode-aus http\u00253A\u00252F\u00252Fexample.com
zu http://example.com
mit JavaScript? Ich habe versucht unescape
decodeURI
und decodeURIComponent
also ich denke, das einzige, was Links ist string ersetzen.
EDIT: Der string ist nicht getippt, sondern eher ein Teilstring aus einem anderen Stück code. So lösen Sie das problem haben, beginnen Sie mit etwas wie dieses:
var s = 'http\\u00253A\\u00252F\\u00252Fexample.com';
Ich hoffe das zeigt, warum unescape() nicht funktioniert.
InformationsquelleAutor der Frage styfle | 2011-10-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Original Antwort:
Können Sie offload all die Arbeit zu
JSON.parse
Bearbeiten (2017-10-12):
@MechaLynx und @Kevin-Weber beachten Sie, dass
unescape()
ist veraltet aus nicht-browser-Umgebungen und existiert nicht in Schriftlicher.decodeURIComponent
ist ein drop-in-Ersatz. Für eine breitere Kompatibilität, verwenden Sie die unten statt:InformationsquelleAutor der Antwort radicand
UPDATE: Bitte beachten Sie, dass dies eine Lösung, sollte es auch für ältere Browser oder nicht browser-Plattformen, und ist am Leben gehalten wird, für Unterrichtszwecke. Bitte @radicand 's Antwort unten für eine mehr up-to-date die Antwort.
Dies ist eine unicode, entkam string. Zuerst wird die Zeichenfolge entgangen war, dann codiert unicode. Zu konvertieren zurück zu normal:
Zur Erklärung: ich benutze einen regulären Ausdruck zu suchen
\u0025
. Jedoch, da ich nur ein Teil dieser Zeichenfolge für meinen ersetzen-operation, ich verwende Klammern, um isolieren Sie den Teil werde ich auf die Wiederverwendung, das0025
. In diesem isolierten Teil nennt man eine Gruppe.Den
gi
Teil an das Ende des Ausdrucks kennzeichnet, sollte es passen alle Instanzen der Zeichenfolge, nicht nur die erste, und dass das matching sollte groß-und Kleinschreibung. Dies Aussehen könnte, unnötig, zum Beispiel, aber es fügt Vielseitigkeit.Nun, umwandeln von einem string zum nächsten, ich muss zum ausführen einiger Schritte für jede Gruppe von jedem Spiel, und das kann ich nicht einfach durch die Umwandlung der Zeichenfolge. Hilfreich, den String.ersetzen-Vorgang annehmen kann, eine Funktion, die ausgeführt werden, für jedes Spiel. Die Rückgabe der Funktion ersetzt das match selbst in der Zeichenfolge.
Ich den zweiten parameter dieser Funktion akzeptiert wird, das ist die Gruppe, die ich verwenden müssen, und verwandeln es, um das äquivalent utf-8-Sequenz, dann verwenden Sie den eingebauten
unescape
Funktion zum decodieren der Zeichenfolge in die richtige form.InformationsquelleAutor der Antwort Ioannis Karadimas
Beachten Sie, dass die Verwendung von
unescape()
ist veraltet und funktioniert nicht mit den TypeScript-compiler, zum Beispiel.Basierend auf radicand die Antwort und die Kommentare Abschnitt unten, hier ist eine aktualisierte Lösung:
http://example.com
InformationsquelleAutor der Antwort Kevin Weber
Haben Sie einen Blick auf diese Seite: http://www.rishida.net/tools/conversion/
Fügen Sie den code in das Obere Textfeld (entfernen der Doppel-Schrägstriche am Anfang).
Der code ist open source: http://www.rishida.net/tools/conversion/conversionfunctions.js
InformationsquelleAutor der Antwort Petah
Ich habe nicht genug rep setzen diese unter Kommentare zu den bereits vorhandenen Antworten:
unescape
ist nur veraltet für das arbeiten mit URIs (oder jede codierte utf-8 -) das ist wahrscheinlich der Fall für die meisten die Bedürfnisse der Menschen.encodeURIComponent
wandelt eine js string to UTF-8-Escape unddecodeURIComponent
funktioniert nur auf UTF-8-Escape-bytes. Es wirft einen Fehler, für etwas wiedecodeURIComponent('%a9'); //error
da erweiterte ascii ist nicht gültig utf-8 (obwohl das immer noch eine unicode-Wert), in der Erwägung, dassunescape('%a9'); //©
So müssen Sie wissen, dass Ihre Daten bei der Verwendung von decodeURIComponent.decodeURIComponent funktionieren nicht auf
"%C2"
oder jede lone byte über0x7f
weil in utf-8, gibt an, Teil einer Leihmutter. AllerdingsdecodeURIComponent("%C2%A9") //gives you ©
Unescape wäre nicht richtig funktioniert, dass//©
UND es würde einen Fehler auslösen, so unescape führen kann zu fehlerhaftem code, wenn Sie nicht wissen, Ihre Daten.InformationsquelleAutor der Antwort aamarks