Signatur
Beschreibung
unescape() ist eine globale Funktion, die einen neuen String erzeugt, indem sie hexadezimale Escape-Sequenzen der Form %xx (2-stellig) und %uxxxx (4-stellig für Unicode-Zeichen) durch die Zeichen ersetzt, die sie repräsentieren. Sie ist das Gegenstück zur ebenfalls veralteten Funktion escape().
Wichtig: unescape() ist seit ECMAScript 5 offiziell als veraltet (deprecated) markiert und sollte in modernem Code nicht mehr verwendet werden. Die Funktion ist ausschließlich aus Gründen der Rückwärtskompatibilität weiterhin verfügbar. Für das Dekodieren von URL-Bestandteilen sollten stattdessen decodeURIComponent() oder decodeURI() eingesetzt werden.
Der Unterschied zu den modernen Alternativen liegt im Zeichenumfang und der Kodierungsstrategie: unescape() verarbeitet nur das Latin-1-Subset und Unicode-Sequenzen im proprietären %uxxxx-Format, das nicht Teil des URI-Standards ist. decodeURIComponent() hingegen folgt dem RFC-3986-Standard und dekodiert UTF-8-kodierte Byte-Triplets (%C3%A4 für „ä"), wie sie von modernen Webstandards erwartet werden.
Der Rückgabewert ist immer ein neuer String; die ursprüngliche Zeichenkette bleibt unverändert. Sequenzen, die nicht als gültige Escape-Sequenzen erkannt werden, werden unverändert in den Ergebnis-String übernommen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $str Pflicht | string | — | Der zu dekodierender String, der hexadezimale Escape-Sequenzen der Form %xx oder %uxxxx enthalten kann. |
Rückgabewert
Beispiele
Einfache Escape-Sequenzen dekodieren
// %xx-Format (Latin-1)
const encoded = 'Hallo%20Welt%21';
const decoded = unescape(encoded);
console.log(decoded);
Unicode-Sequenzen im %uxxxx-Format
// %uxxxx-Format für Unicode-Zeichen
const unicodeEncoded = '%u00e4%u00f6%u00fc'; // ä, ö, ü
const result = unescape(unicodeEncoded);
console.log(result);
Moderner Ersatz: decodeURIComponent()
// EMPFOHLEN: decodeURIComponent() statt unescape()
const urlEncoded = 'Stra%C3%9Fe%20und%20Weg';
// unescape() kann UTF-8-Byte-Triplets NICHT korrekt dekodieren:
console.log(unescape(urlEncoded)); // falsch: "StraÃe und Weg"
// decodeURIComponent() verarbeitet UTF-8 korrekt:
console.log(decodeURIComponent(urlEncoded)); // korrekt: "Straße und Weg"
// Wichtig · Fallstricke
Veraltet (Deprecated): unescape() ist seit ES5 offiziell als veraltet markiert. Viele JavaScript-Engines und Lint-Tools warnen bei seiner Verwendung. In zukünftigen Sprachversionen oder strikten Umgebungen könnte die Funktion entfernt werden.
- Falsche UTF-8-Dekodierung:
unescape()versteht kein UTF-8. Moderne URLs kodieren Nicht-ASCII-Zeichen als mehrteilige%xx-Byte-Triplets (z. B.%C3%A4für „ä").unescape()interpretiert diese als separate Latin-1-Zeichen und liefert korrumpierten Text. - Kein Standard-URL-Format: Das
%uxxxx-Format ist kein Teil des URI-Standards (RFC 3986) und wird von anderen Systemen nicht verstanden. - Empfohlene Alternativen:
decodeURIComponent()für einzelne URL-Komponenten (Query-Parameter, Pfadsegmente),decodeURI()für vollständige URIs.