[ Web Proxy ]
URL:
Viewing: https://it.javascript.info/text-decoder [Back]  [Original]

TextDecoder e TextEncoder
IT

Vorremo rendere disponibile questo progetto open-source per persone in tutto il mondo.

Aiutaci a tradurre il contenuto di questo tutorial nella tua lingua!

    Cerca in Javascript.info:
    Cerca nel tutorial:
    Light themeDark theme
    DanskEnglishEspaolFranaisIndonesiaItalianoTrkeOzbek

    TextDecoder e TextEncoder

    E se il dato binario in realt fosse una stringa? Ad esempio, se ricevessimo un file contente dati testuali.

    Loggetto integrato TextDecoder, dato il buffer e lencoding, ci consente di leggere il valore come se fosse una stringa JavaScript.

    Come prima cosa dobbiamo crearlo:

    let decoder = new TextDecoder([label], [options]);
    • label, lencoding di default utf-8, ma sono supportati anche big5, windows-1251 e molti altri.
    • options, oggetto opzionale:
      • fatal, boolean, se vale true allora verr generata uneccezione per i caratteri invalidi (non-decodificabili), altrimenti (default) verranno rimpiazzati con il carattere \uFFFD.
      • ignoreBOM, boolean, se vale true allora ignora BOM (un marcatore opzionale di byte-order Unicode), raramente utilizzato.

    E successivamente decodificare:

    let str = decoder.decode([input], [options]);
    • input, il BufferSource da decodificare.
    • options, oggetto opzionale:
      • stream, true per la decodifica di stream, quando decoder viene invocato ripetutamente con blocchi di dati in arrivo. In questo caso un carattere multi-byte potrebbe venir diviso in blocchi. Questa opzione dice al TextDecoder di memorizzare i caratteri incompleti e di decodificarli allarrivo del prossimo blocco.

    Ad esempio:

    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) ); // 

    Possiamo decodificare una parte del buffer creando un visualizzatore su un suo sotto-array:

    let uint8Array = new Uint8Array([0, 72, 101, 108, 108, 111, 0]);
    
    // la stringa sta al centro
    // ne crea un nuovo visualizzatore, senza copiare nulla
    let binaryString = uint8Array.subarray(1, -1);
    
    alert( new TextDecoder().decode(binaryString) ); // Hello

    TextEncoder

    TextEncoder fa esattamente loperazione inversa, converte stringe in byte.

    La sintassi :

    let encoder = new TextEncoder();

    Lunica codifica che supporta utf-8.

    Mette a disposizione due metodi:

    • encode(str), ritorna Uint8Array partendo da una stringa.
    • encodeInto(str, destination), esegue lencode di str in destination il quale deve essere un Uint8Array.
    let encoder = new TextEncoder();
    
    let uint8Array = encoder.encode("Hello");
    alert(uint8Array); // 72,101,108,108,111
    Mappa del tutorial

    Commenti

    leggi questo prima di lasciare un commento
    • Per qualsiasi suggerimento - per favore, apri una issue su GitHub o una pull request, piuttosto di lasciare un commento.
    • Se non riesci a comprendere quanto scitto nell'articolo ti preghiamo di fornire una spiegazione chiara.
    • Per inserire delle righe di codice utilizza il tag <code>, per molte righe includile nel tag <pre>, per pi di 10 righe utilizza una sandbox (plnkr, jsbin, codepen)

    Web Proxy Viewer  |  New URL  |  Original Page