Signatur
Beschreibung
escape() ist eine globale Funktion, die einen String entgegennimmt und eine URL-kodierte Darstellung zurückgibt, in der Sonderzeichen durch Escape-Sequenzen der Form %XX (für ASCII-Zeichen) bzw. %uXXXX (für Unicode-Zeichen außerhalb des ASCII-Bereichs) ersetzt werden. Buchstaben, Ziffern und die Zeichen @ * _ + - . / werden dabei nicht kodiert.
Wichtig: escape() ist seit ECMAScript 5 als deprecated markiert und sollte in modernem Code nicht mehr verwendet werden. Die Funktion verarbeitet Unicode-Zeichen nicht korrekt nach dem heutigen URI-Standard (RFC 3986) und liefert für Multi-Byte-UTF-8-Zeichen unerwartete Ergebnisse. Als Ersatz bieten sich encodeURIComponent() für einzelne URI-Komponenten oder encodeURI() für vollständige URIs an.
Die Gegenfunktion zu escape() ist unescape(), die ebenfalls als veraltet gilt. Für die Dekodierung moderner URIs stehen decodeURIComponent() und decodeURI() bereit.
escape() eignet sich heute allenfalls noch für die Arbeit mit sehr altem Code oder Legacy-Systemen, die explizit das %uXXXX-Format erwarten – in allen anderen Fällen sollte man auf die modernen Alternativen zurückgreifen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $string Pflicht | string | Der zu kodierende String. Nicht-String-Werte werden vor der Verarbeitung in einen String umgewandelt. |
Rückgabewert
A–Z a–z 0–9 @ * _ + - . / durch hexadezimale Escape-Sequenzen (%XX oder %uXXXX) ersetzt wurden.Beispiele
Einfache Anwendung von escape()
// Veraltete Nutzung – nur zur Veranschaulichung
const encoded = escape('Hallo Welt! Preis: 5€');
console.log(encoded);
// Unicode-Zeichen wie € werden als %uXXXX kodiert
const decoded = unescape(encoded);
console.log(decoded);
Moderne Alternative: encodeURIComponent()
// So sollte es in modernem Code gemacht werden:
const suchbegriff = 'Kaffee & Kuchen für 3€';
// FALSCH (veraltet):
const altKodiert = escape(suchbegriff);
console.log('escape(): ', altKodiert);
// RICHTIG (modern, RFC 3986-konform):
const neuKodiert = encodeURIComponent(suchbegriff);
console.log('encodeURIComponent():', neuKodiert);
// Einbau in eine URL:
const url = `https://example.com/search?q=${neuKodiert}`;
console.log(url);
// Wichtig · Fallstricke
Deprecated: escape() und das zugehörige unescape() sind seit ES5 als veraltet markiert und könnten in zukünftigen JavaScript-Engines entfernt werden – auch wenn das in der Praxis unwahrscheinlich ist, da viele Legacy-Systeme darauf angewiesen sind.
- Falsche UTF-8-Kodierung:
escape()kodiert Unicode-Zeichen als%uXXXX, was kein gültiges URI-Format nach RFC 3986 ist. Server und Browser können solche URLs falsch interpretieren. - Nicht URL-sicher: Das Zeichen
/wird vonescape()nicht kodiert, was bei Pfad-Segmenten zu Problemen führen kann. - Alternativen: Für URI-Komponenten
encodeURIComponent()verwenden; für vollständige URIsencodeURI(); als DekodierungdecodeURIComponent()bzw.decodeURI(). - Browser-Kompatibilität:
escape()wird von allen Browsern und Node.js unterstützt, jedoch ausschließlich aus Kompatibilitätsgründen.