Es sieht so aus, als ob ein Teil der Antworten hier die Dateikodierung nicht berücksichtigt.
Ich bin gerade auf dieses Problem gestoßen, aus verschiedenen anderen Gründen, aber
echo $null > $file
$null > $file
erzeugen beide eine UTF-16-LE-Datei, während
New-Item $file -type file
eine UTF-8-Datei erzeugen.
fc > $file
und fc >> $file
scheinen, aus welchem Grund auch immer, ebenfalls UTF-8-Dateien zu erzeugen.
Out-File $file -encoding utf8
liefert eine UTF-8-BOM-Datei, während
Out-File $file -encoding ascii
eine UTF-8-Datei liefert. Andere gültige (aber nicht getestete) Kodierungen, die Out-File unterstützt, sind: [[-Encoding] {unbekannt | string | unicode | bigendianunicode | utf8 | utf7 | utf32 | ascii | default | oem}]. Sie können auch Dinge über die Pipeline an Out-File übergeben, um der Datei einige Textdaten zum Speichern zu geben, und auch ein -append-Flag. Zum Beispiel:
echo $null | Out-File .\stuff.txt -Encoding ascii -Append
Dieses Beispiel aktualisiert den Zeitstempel aus irgendeinem Grund nicht, aber dieses tut es:
echo foo | Out-File .\stuff.txt -Encoding ascii -Append
Obwohl es den Nebeneffekt hat, “foo” an das Ende der Datei anzuhängen.
Wenn Sie sich nicht sicher sind, welche Kodierung Sie haben, habe ich festgestellt, dass VS-Code eine nette Funktion hat, bei der in der unteren rechten Ecke steht, welche Kodierung es ist. Ich glaube, Notepad++ hat auch eine ähnliche Funktion.