Wygląda na to, że kilka odpowiedzi tutaj nie uwzględnia kodowania plików.
Właśnie wpadłem na ten problem, z różnych innych powodów, ale
echo $null > $file
$null > $file
oba produkują plik UTF-16-LE, podczas gdy
New-Item $file -type file
produkuje plik UTF-8.
Z jakiegoś powodu fc > $file
i fc >> $file
, również wydają się produkować pliki UTF-8.
Out-File $file -encoding utf8
daje ci plik UTF-8-BOM, podczas gdy
Out-File $file -encoding ascii
daje ci plik UTF-8. Inne poprawne (lecz niesprawdzone) kodowania obsługiwane przez Out-File to: [[-Encoding] {unknown | string | unicode | bigendianunicode | utf8 | utf7 | utf32 | ascii | default | oem}]. Możesz także przekazać rzeczy do Out-File, aby dać plikowi jakieś dane tekstowe do przechowania, a także flagę -append. Na przykład:
echo $null | Out-File .\stuff.txt -Encoding ascii -Append
Ten przykład z jakiegoś powodu nie aktualizuje znacznika czasu, ale ten tak:
echo foo | Out-File .\stuff.txt -Encoding ascii -Append
Chociaż ma efekt uboczny w postaci dodania “foo” na koniec pliku.
Jeśli nie jesteś pewien, jakie masz kodowanie, odkryłem, że VS-Code ma fajną funkcję, gdzie w prawym dolnym rogu jest napisane, jakie jest kodowanie. Myślę, że Notepad++ również ma podobną funkcję.