¿Qué pasa si los datos binarios son en realidad un string? Por ejemplo, recibimos un archivo con datos textuales.
El objeto incorporado TextDecoder nos permite leer el valor y convertirlo en un string de JavaScript, dados el búfer y la codificación.
Primero necesitamos crearlo:
let decoder = new TextDecoder([label], [options]);
label– la codificación,utf-8por defecto, perobig5,windows-1251y muchos otros también son soportados.options– objeto opcional:fatal– booleano, si estruearroja una excepción por caracteres inválidos (no-decodificable), de otra manera (por defecto) son reemplazados con el carácter\uFFFD.ignoreBOM– booleano, si estrueentonces ignora BOM (una marca Unicode de orden de bytes opcional), raramente es necesario.
…Y luego decodificar:
let str = decoder.decode([input], [options]);
input–BufferSourcepara decodificar.options– objeto opcional:stream– true para decodificación de secuencias, cuando eldecoderes usado repetidamente para fragmentos de datos entrantes. En ese caso, un carácter de varios bytes puede ocasionalmente dividirse entre fragmentos. Esta opción le dice alTextDecoderque memorice caracteres “incompletos” y que los decodifique cuando venga el siguiente fragmento.
Por ejemplo:
Podemos decodificar una parte del búfer al crear una vista de sub arreglo para ello:
TextEncoder
TextEncoder hace lo contrario: convierte un string en bytes.
La sintaxis es:
let encoder = new TextEncoder();
La única codificación que soporta es “utf-8”.
Tiene dos métodos:
encode(str)– regresa un dato de tipoUint8Arrayde un string.encodeInto(str, destination)– codifica unstrendestination, este último debe ser de tipoUint8Array.