Avviando un processo da Visual Studio 2022, tramite la classe Process di C#, mi sono imbattuto in un testo al quanto difficile da leggere.
![Visual Studio 2022 debug console che mostra l'output del programma SFC](https://www.alessandrobasi.it/wp-content/uploads/2022/08/sfc-bad-encoding-1.png)
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
![notepad++ codifica output di SFC UTF-16 little endian](https://www.alessandrobasi.it/wp-content/uploads/2022/08/sfc-notepad-1.png)
DISM > dism.txt
![notepad++ codifica output di DISM in ANSI](https://www.alessandrobasi.it/wp-content/uploads/2022/08/dism-notepad-1.png)
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).
![notepad++ output del powershell del comando SFC codifica UTF-16 LE BOM](https://www.alessandrobasi.it/wp-content/uploads/2022/08/sfc-ps-notepad.png)
![notepad++ output del powershell del comando DISM codifica UTF-16 LE BOM](https://www.alessandrobasi.it/wp-content/uploads/2022/08/dism-ps-notepad.png)
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