6 сентябр 2025

TextDecoder va TextEncoder

Agar binary ma’lumot aslida string bo’lsa nima bo’ladi? Masalan, biz matnli ma’lumotlarga ega faylni oldik.

O’rnatilgan TextDecoder obyekti buffer va kodlashni hisobga olgan holda qiymatni haqiqiy JavaScript string ga o’qish imkonini beradi.

Avval uni yaratishimiz kerak:

let decoder = new TextDecoder([label], [options]);
  • label – kodlash, standart bo’yicha utf-8, lekin big5, windows-1251 va ko’p boshqalar ham qo’llab-quvvatlanadi.
  • options – ixtiyoriy obyekt:
    • fatal – boolean, agar true bo’lsa, yaroqsiz (decode qilib bo’lmaydigan) belgilar uchun istisno tashlaydi, aks holda (standart) ularni \uFFFD belgisi bilan almashtiradi.
    • ignoreBOM – boolean, agar true bo’lsa, BOM ni (ixtiyoriy bayt-tartib Unicode belgisi) e’tiborsiz qoldiradi, kamdan-kam kerak bo’ladi.

…Va keyin decode qilish:

let str = decoder.decode([input], [options]);
  • input – decode qilinadigan BufferSource.
  • options – ixtiyoriy obyekt:
    • stream – oqimlarni decode qilish uchun true, decoder kiruvchi ma’lumot bo’laklari bilan takroran chaqirilganda. Bu holda ko’p baytli belgi ba’zan bo’laklar orasida bo’linishi mumkin. Bu parametr TextDecoder ga “tugallanmagan” belgilarni eslab qolish va keyingi bo’lak kelganda ularni decode qilish haqida aytadi.

Masalan:

let uint8Array = new Uint8Array([72, 101, 108, 108, 111]);

alert( new TextDecoder().decode(uint8Array) ); // Hello
let uint8Array = new Uint8Array([228, 189, 160, 229, 165, 189]);

alert( new TextDecoder().decode(uint8Array) ); // 你好

Buffer ning bir qismini uning uchun subarray view yaratish orqali decode qilishimiz mumkin:

let uint8Array = new Uint8Array([0, 72, 101, 108, 108, 111, 0]);

// string o'rtada
// hech narsani nusxalamasdan uning ustida yangi view yaratish
let binaryString = uint8Array.subarray(1, -1);

alert( new TextDecoder().decode(binaryString) ); // Hello

TextEncoder

TextEncoder teskari ishni bajaradi – string ni baytlarga aylantiradi.

Sintaksis:

let encoder = new TextEncoder();

U qo’llab-quvvatlaydigan yagona kodlash “utf-8”.

Uning ikkita usuli bor:

  • encode(str) – string dan Uint8Array qaytaradi.
  • encodeInto(str, destination)str ni Uint8Array bo’lishi kerak bo’lgan destination ga kodlaydi.
let encoder = new TextEncoder();

let uint8Array = encoder.encode("Hello");
alert(uint8Array); // 72,101,108,108,111
O'quv qo'llanma xaritasi

Izohlar

izoh berishdan oldin buni o'qing…
  • Agar sizda nimani yaxshilash kerakligi haqida takliflaringiz bo'lsa - iltimos, GitHub muammosini yuboring yoki izoh berish o'rniga so'rov yuboring.
  • Agar siz maqolada biror narsani tushunolmasangiz - iltimos, batafsilroq ma'lumot bering.
  • Bir nechta so'z so'zlarini kiritish uchun <code> yorlig'ini ishlating, bir nechta satrlar uchun - ularni <pre> yorlig'i bilan o'rab qo'ying, 10 satrdan ortiq bo'lsa - sandbox (plnkr, jsbin, codepen…)