يرمّز TextEncoder السلاسل النصية بصيغة UTF-8. ويدعم TextDecoder ترميزات UTF-8
وUTF-16 والترميزات القديمة أحادية البايت وترميزات CJK الشائعة باستخدام تسميات
WHATWG.
const bytes = new TextEncoder().encode("Hello, мир! 🌍");
new TextDecoder().decode(bytes); // "Hello, мир! 🌍"TextEncoder
| العنصر | النتيجة |
|---|---|
encoding | دائمًا "utf-8". |
encode(input = "") | Uint8Array جديدة. |
encodeInto(source, destination) | { read, written } دون نقاط رمزية جزئية. |
تُستبدل البدائل غير المقترنة بـ U+FFFD.
TextDecoder
const decoder = new TextDecoder("latin1");
decoder.decode(new Uint8Array([0x80])); // "€"تُقصّ التسميات وتُطبَّع حالة أحرفها. وتختار الأسماء البديلة مثل ascii
وiso-8859-1 وlatin1 ترميز Windows-1252. وترمي التسميات غير المعروفة وتسميات
الاستبدال RangeError.
الخيارات:
- يرفض
fatal: true المدخلات المشوّهة بـ TypeError؛ - يتحكم
ignoreBOM في معالجة BOM في البداية؛ - يحتفظ
decode(input, { stream: true }) بتسلسل غير مكتمل للاستدعاء التالي.
const decoder = new TextDecoder();
decoder.decode(new Uint8Array([0xc3]), { stream: true }); // ""
decoder.decode(new Uint8Array([0xa9])); // "é"التدفق
يحوّل TextEncoderStream أجزاء السلاسل النصية إلى بايتات UTF-8.
ويحوّل TextDecoderStream أجزاء البايتات إلى سلاسل نصية مع الحفاظ على
التسلسلات متعددة البايتات الجزئية بين الأجزاء.
يجب استدعاء المُنشئات بـ new.
Reference
Status: Full · 14,178 of 14,266 suite tests pass (99.4%) · since 1.1.0
Exports
| Export | Kind | Status | Notes |
|---|---|---|---|
TextDecoder | class | Full | encoding, fatal, ignoreBOM, decode() |
TextEncoder | class | Full | encoding, 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.