Het lijkt erop dat een hoop antwoorden hier geen rekening houden met bestandscodering.
Ik liep net tegen dit probleem aan, om verschillende andere redenen, maar
echo $null > $file
$null > $file
produceren beide een UTF-16-LE bestand, terwijl
New-Item $file -type file
een UTF-8 bestand produceert.
Om wat voor reden dan ook lijken fc > $file
en fc >> $file
ook UTF-8 bestanden te produceren.
Out-File $file -encoding utf8
geeft je een UTF-8-BOM bestand, terwijl
Out-File $file -encoding ascii
je een UTF-8 bestand geeft. Andere geldige (maar niet geteste) coderingen die Out-File ondersteunt zijn: [[-Encoding] {unknown | string | unicode | bigendianunicode | utf8 | utf7 | utf32 | ascii | default | oem}]. Je kunt ook dingen naar Out-File pijpen om het bestand wat tekstdata te geven om op te slaan, en ook een -append vlag. Bijvoorbeeld:
echo $null | Out-File .\stuff.txt -Encoding ascii -Append
Dit voorbeeld werkt om de een of andere reden de tijdstempel niet bij, maar deze doet het wel:
echo foo | Out-File .\stuff.txt -Encoding ascii -Append
Hoewel het wel als neveneffect heeft dat “foo” aan het eind van het bestand wordt toegevoegd.
Als je niet zeker weet welke codering je hebt, heb ik gemerkt dat VS-Code een handige functie heeft waar rechts onderin staat wat de codering is. Ik denk dat Notepad++ ook een soortgelijke functie heeft.