¿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, pero- big5,- windows-1251y muchos otros también son soportados.
- options– objeto opcional:- fatal– booleano, si es- truearroja una excepción por caracteres inválidos (no-decodificable), de otra manera (por defecto) son reemplazados con el carácter- \uFFFD.
- ignoreBOM– booleano, si es- trueentonces 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 el- decoderes 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 al- TextDecoderque memorice caracteres “incompletos” y que los decodifique cuando venga el siguiente fragmento.
 
Por ejemplo:
let uint8Array = new Uint8Array([72, 111, 108, 97]);
alert( new TextDecoder().decode(uint8Array) ); // Holalet uint8Array = new Uint8Array([228, 189, 160, 229, 165, 189]);
alert( new TextDecoder().decode(uint8Array) ); // 你好Podemos decodificar una parte del búfer al crear una vista de sub arreglo para ello:
let uint8Array = new Uint8Array([0, 72, 111, 108, 97, 0]);
// El string esta en medio
// crear una nueva vista sobre el string, sin copiar nada
let binaryString = uint8Array.subarray(1, -1);
alert( new TextDecoder().decode(binaryString) ); // HolaTextEncoder
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 tipo- Uint8Arrayde un string.
- encodeInto(str, destination)– codifica un- stren- destination, este último debe ser de tipo- Uint8Array.
let encoder = new TextEncoder();
let uint8Array = encoder.encode("Hola");
alert(uint8Array); // 72,111,108,97
Comentarios
<code>, para varias líneas – envolverlas en la etiqueta<pre>, para más de 10 líneas – utilice una entorno controlado (sandbox) (plnkr, jsbin, codepen…)