انتقل إلى المحتوى

الترميز

⁦TextEncoder⁩ و⁦TextDecoder⁩ وتحويلات النصوص المتدفقة.

في هذه الصفحة

يرمّز ⁦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

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.

هل كانت هذه الصفحة مفيدة؟