Scrivere un file con diverse codifiche dei caratteri
Tramite l'istruzione Set-Content di PowerShell è possibile scrivere un testo in un file
in questo caso scrivo un file di nome ascii.txt dove all'interno c'è il testo aa scritto con la codifica ASCII, il default.
La lunghezza del file è di 4 byte, non 2, in quanto viene inserito un ritorno a capo (CR + LF) che occupa 2 byte.
Il contenuto in byte è il seguente: 61 61 0D 0A
Se volessi scrivere un testo con la codifica Unicode
in questo caso il file avrà una lunghezza di 10 byte., ovvero 2 byte iniziali fissi FF FE più 2 byte per ogni carattere.
Il contenuto in byte è: FF FE 61 00 61 00 0D 00 0A 00
Mentre se lo volessi in UTF-8
il file avrà lunghezza 7 byte. In UTF-8 la lunghezza dei byte che compongono il singolo carattere è variabile, i tre byte iniziali (EF BB BF) sono il BOM.
Il contenuto in byte è: EF BB BF 61 61 0D 0A
Per approfondimenti sulla codifica dei caratteri vedi anche http://en.wikipedia.org/wiki/Character_encoding e http://en.wikipedia.org/wiki/Byte_order_mark
PowerShell
set-content ascii.txt "aa"
La lunghezza del file è di 4 byte, non 2, in quanto viene inserito un ritorno a capo (CR + LF) che occupa 2 byte.
Il contenuto in byte è il seguente: 61 61 0D 0A
Se volessi scrivere un testo con la codifica Unicode
PowerShell
set-content unicode.txt "aa" -Encoding unicode
Il contenuto in byte è: FF FE 61 00 61 00 0D 00 0A 00
I due byte iniziali sono detti byte order mark (BOM) e servono per identificate il tipo di codifica del file di testo, in questo caso unicode. Il BOM non è obbligatorio ma se c'è deve essere all'inizio.
Mentre se lo volessi in UTF-8
PowerShell
set-content unicode.txt "aa" -Encoding utf8
Il contenuto in byte è: EF BB BF 61 61 0D 0A
Per approfondimenti sulla codifica dei caratteri vedi anche http://en.wikipedia.org/wiki/Character_encoding e http://en.wikipedia.org/wiki/Byte_order_mark