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âyichautf-8, lekinbig5,windows-1251va koâp boshqalar ham qoâllab-quvvatlanadi.optionsâ ixtiyoriy obyekt:fatalâ boolean, agartrueboâlsa, yaroqsiz (decode qilib boâlmaydigan) belgilar uchun istisno tashlaydi, aks holda (standart) ularni\uFFFDbelgisi bilan almashtiradi.ignoreBOMâ boolean, agartrueboâ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 qilinadiganBufferSource.optionsâ ixtiyoriy obyekt:streamâ oqimlarni decode qilish uchun true,decoderkiruvchi maâlumot boâlaklari bilan takroran chaqirilganda. Bu holda koâp baytli belgi baâzan boâlaklar orasida boâlinishi mumkin. Bu parametrTextDecoderga â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 danUint8Arrayqaytaradi.encodeInto(str, destination)âstrniUint8Arrayboâlishi kerak boâlgandestinationga kodlaydi.
let encoder = new TextEncoder();
let uint8Array = encoder.encode("Hello");
alert(uint8Array); // 72,101,108,108,111
Izohlar
<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â¦)