Signatur
Beschreibung
Die Eigenschaft encoding eines TextEncoder-Objekts liefert den Namen des Kodierungsalgorithmus, mit dem Zeichenketten in Bytes umgewandelt werden. Laut aktuellem Encoding Standard der WHATWG unterstützt TextEncoder ausschließlich UTF-8, der Wert ist deshalb immer der String "utf-8" (klein geschrieben).
In der Praxis braucht man die Eigenschaft vor allem für Diagnose, Protokollierung oder generischen Code, der mit Encodern und Decodern arbeitet und die Kodierung weiterreichen möchte, etwa an einen passenden TextDecoder oder in einen Content-Type-Header.
Ältere Browser-Implementierungen (z. B. Firefox vor Version 48 oder Chrome vor 53) nahmen im Konstruktor noch ein Label wie "utf-16le" entgegen. Dieses Verhalten wurde aus der Spezifikation entfernt: Heute wird jedes übergebene Argument ignoriert, und encoding bleibt "utf-8".
Rückgabewert
"utf-8".Beispiele
Kodierung eines Encoders auslesen
const encoder = new TextEncoder();
console.log(encoder.encoding);
const bytes = encoder.encode('Grüße');
console.log(bytes.length); // ü und ß belegen je 2 Bytes
Passenden TextDecoder aus der Encoder-Kodierung erzeugen
const encoder = new TextEncoder();
const decoder = new TextDecoder(encoder.encoding);
const bytes = encoder.encode('Hallo Welt 👋');
const text = decoder.decode(bytes);
console.log(decoder.encoding, text);
Kodierung im Content-Type-Header verwenden
const encoder = new TextEncoder();
const body = encoder.encode(JSON.stringify({ name: 'Jürgen' }));
const sendData = async () => {
const response = await fetch('/api/users', {
method: 'POST',
headers: { 'Content-Type': `application/json; charset=${encoder.encoding}` },
body
});
console.log(response.status);
};
sendData();
Eigenschaft ist schreibgeschützt
'use strict';
const encoder = new TextEncoder();
try {
encoder.encoding = 'utf-16le';
} catch (err) {
console.log(err.name);
}
console.log(encoder.encoding);
// Wichtig · Fallstricke
- Immer UTF-8: Ein Konstruktor-Argument wie
new TextEncoder('utf-16')wird in modernen Umgebungen stillschweigend ignoriert. Wer andere Kodierungen (z. B. ISO-8859-1 oder UTF-16) erzeugen muss, braucht eine eigene Umwandlung oder eine Bibliothek. - Schreibgeschützt: Die Eigenschaft ist ein reiner Getter. Eine Zuweisung wird im nicht-strikten Modus ignoriert und löst im strikten Modus einen
TypeErroraus. - Kleinschreibung: Der Wert lautet
"utf-8", nicht"UTF-8"– das ist bei String-Vergleichen wichtig. - Kompatibilität: In allen modernen Browsern, Web Workern, Deno und Node.js (global ab Version 11, vorher über
require('util').TextEncoder) verfügbar. Der Internet Explorer unterstütztTextEncodernicht.