Il semble qu'une partie des réponses données ici ne tiennent pas compte de l'encodage des fichiers.
Je viens de rencontrer ce problème, pour diverses autres raisons, mais
echo $null > $file
$null > $file
les deux produisent un fichier UTF-16-LE, tandis que
New-Item $file -type file
produit un fichier UTF-8.
Pour une raison quelconque, fc > $file
et fc >> $file
, semblent également produire des fichiers UTF-8.
Out-File $file -encoding utf8
vous donne un fichier UTF-8-BOM, tandis que
Out-File $file -encoding ascii
vous donne un fichier UTF-8. D'autres codages valables (mais non testés) sont pris en charge par Out-File : [[-Encoding] {unknown | string | unicode | bigendianunicode | utf8 | utf7 | utf32 | ascii | default | oem}]. Vous pouvez également transmettre des informations à Out-File pour donner au fichier des données textuelles à stocker, ainsi qu'un drapeau -append. Par exemple :
echo $null | Out-File .\stuff.txt -Encoding ascii -Append
cet exemple ne met pas à jour l'horodatage pour une raison quelconque, mais celui-ci le fait :
echo foo | Out-File .\stuff.txt -Encoding ascii -Append
Bien qu'il ait l'effet secondaire d'ajouter “foo” à la fin du fichier.
Si vous n'êtes pas sûr de l'encodage que vous avez, j'ai trouvé que VS-Code a une fonction très pratique où, dans le coin inférieur droit, il indique quel est l'encodage. Je pense que Notepad++ a également une fonction similaire.