Ciò è dovuto al fatto che l'output di scrittura ha come valore predefinito la codifica del testo UTF-16, che è 2 byte per carattere. Quando si ha a che fare con testo che rientra nell'intervallo di codepage ASCII, il secondo byte di ciascun carattere sarà zero.
Questo è controllato dalla variabile globale $OutputEncoding
, quindi è possibile impostarlo su ASCII.
Un'altra opzione è utilizzare il file di output del cmdlet, che ha un parametro di codifica esplicito. Ti suggerirei di utilizzare questo anziché il reindirizzamento dell'output, perché ti consente di non modificare l'ambiente globalmente (impostando la variabile di preferenza globale $OutputEncoding
)
Utilizzando Out-File e impostando la codifica come ASCII, il tuo esempio sarà simile questo:
"abcd" | out-file "mytext.txt" -Encoding ASCII
non essere consapevoli del fatto che non tutti i personaggi sono rappresentabili in ASCII, e si dovrebbe determinare se si tratta di una codifica appropriata per il vostro scopo. Personalmente in genere vado per UTF-8, poiché è equivalente ASCII quando i caratteri rientrano nell'intervallo ASCII da 0 a 127, ma gestisce anche caratteri internazionali. Obligatory link about text encoding.
Grazie per questa domanda !! –