Avviando un processo da Visual Studio 2022, tramite la classe Process di C#, mi sono imbattuto in un testo al quanto difficile da leggere.
Invece per il comando DISM questo problema non sembra esserci.
Notepad++ e i comandi SFC e DISM
Dal CMD, stampando su file l’output dei due processi, ed analizzando la codifica con Notepad++ (o anche con notepad), è uscito fuori che i file utilizzavano codifiche molto differenti, anche se prodotti dallo stesso terminale
SFC > sfc.txt
DISM > dism.txt
Per il file di SFC la codifica risulta UTF-16 LE (Little Endian), denominato anche Unicode. Per DISM la codifica è quella standard di ANSI.
Ma non sono le uniche stranezze, nel file di SFC, alcuni ritorni a capo, risultano avere solo un solo identificatore, CR
, molto strano, Windows solitamente utilizza due identificatori, CRLF
.
E con PowerShell come si comporta?
In PowerShell, il terminale più giovane del CMD, impone una sua codifica sui file creati, Unicode con BOM (UTF-16 LE BOM).
Tuttavia in PowerShell, l’output di SFC risulta molto distorto, i ritorni a capo sono tutti corretti, ma tra ogni carattere è presente un valore NUL
ovvero nullo (0x00
). Sembra che l’output del programma non sia conforme ai restanti, o che PowerShell applicando BOM dia fastidio alla codifica.
Be the first to comment