Похоже, что куча ответов здесь не учитывает кодировку файлов.
Я просто столкнулся с этой проблемой по разным причинам, но
echo $null > $file
$null > $file
оба производят файл UTF-16-LE, в то время как
New-Item $file -type file
создает файл UTF-8.
По какой-то причине fc > $file
и fc >> $file
, похоже, также создают файлы UTF-8.
Out-File $file -encoding utf8
дает вам файл UTF-8-BOM, в то время как
Out-File $file -encoding ascii
дает вам файл UTF-8. Другие допустимые (но не проверенные) кодировки, которые поддерживает Out-File: [[-Encoding] {unknown | строка | Юникод | bigendianunicode | utf8 | utf7 | utf32 | ASCII | по умолчанию | ОЙ}]. Вы также можете передать данные в Out-File, чтобы дать файлу некоторые текстовые данные для хранения, а также флаг -append. Например:
echo $null | Out-File .\stuff.txt -Encoding ascii -Append
этот пример не обновляет временную метку по какой-то причине, но этот:
echo foo | Out-File .\stuff.txt -Encoding ascii -Append
Хотя у этого есть побочный эффект добавления "foo" в конец файла.
Если вы не уверены в том, какая у вас кодировка, я обнаружил, что VS-Code имеет отличную функцию, где в правом нижнем углу написано, что такое кодировка. Я думаю, что Notepad++ также имеет аналогичную функцию.