Start · Sprachen · JavaScript · Referenz · TextEncoder.encoding

TextEncoder.encoding

Eigenschaft

Schreibgeschützte Eigenschaft, die den Namen der vom <code>TextEncoder</code> verwendeten Kodierung zurückgibt – immer <code>"utf-8"</code>.

seit JavaScript Baseline: alle Browser (seit 2020 weitgehend), Nod Kategorie: webapi

Signatur

TextEncoder.prototype.encoding

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

Typ
string
Beschreibung
Der Name der Kodierung – in allen aktuellen Umgebungen immer "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
utf-8 7

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);
utf-8 Hallo Welt 👋

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();
201 (je nach Server)

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);
TypeError utf-8

// 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 TypeError aus.
  • 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ützt TextEncoder nicht.