Zum Inhalt springen

Encoding

TextEncoder, TextDecoder und Streaming-Texttransformationen.

Auf dieser Seite

TextEncoder kodiert Zeichenketten als UTF-8. TextDecoder unterstützt UTF-8, UTF-16, veraltete Einzelbyte-Kodierungen und gängige CJK-Kodierungen über WHATWG-Labels.

const bytes = new TextEncoder().encode("Hello, мир! 🌍");
new TextDecoder().decode(bytes); // "Hello, мир! 🌍"

TextEncoder

MitgliedErgebnis
encodingImmer "utf-8".
encode(input = "")Ein neues Uint8Array.
encodeInto(source, destination){ read, written } ohne angebrochene Codepunkte.

Ungepaarte Surrogate werden durch U+FFFD ersetzt.

TextDecoder

const decoder = new TextDecoder("latin1");
decoder.decode(new Uint8Array([0x80])); // "€"

Labels werden beschnitten und in der Schreibweise normalisiert. Aliase wie ascii, iso-8859-1 und latin1 wählen Windows-1252. Unbekannte Labels und Replacement-Labels werfen RangeError.

Optionen:

  • fatal: true lehnt fehlerhafte Eingaben mit TypeError ab;
  • ignoreBOM steuert die Behandlung einer führenden BOM;
  • decode(input, { stream: true }) bewahrt eine unvollständige Sequenz für den nächsten Aufruf.
const decoder = new TextDecoder();
decoder.decode(new Uint8Array([0xc3]), { stream: true }); // ""
decoder.decode(new Uint8Array([0xa9])); // "é"

Streaming

TextEncoderStream wandelt String-Chunks in UTF-8-Bytes um. TextDecoderStream wandelt Byte-Chunks in Zeichenketten um und bewahrt dabei angebrochene Mehrbyte-Sequenzen zwischen Chunks.

Die Konstruktoren müssen mit new aufgerufen werden.

Reference

Status: Full · 14,178 of 14,266 suite tests pass (99.4%) · since 1.1.0

Exports

ExportKindStatusNotes
TextDecoderclassFullencoding, fatal, ignoreBOM, decode()
TextEncoderclassFullencoding, encode(), encodeInto()

Tests: wpt-wintertc encoding: 14,178 pass, 86 fail, 2 error, 329 skipped. Failing: encoding/encodeInto.any.js (65), encoding/textdecoder-streaming.any.js (16), encoding/streams/decode-bad-chunks.any.js (2), encoding/idlharness.any.js, encoding/single-byte-decoder.window.js, encoding/streams/decode-utf8.any.js, encoding/streams/realms.window.js, encoding/textdecoder-copy.any.js.

War diese Seite hilfreich?