Это связано с тем, что по умолчанию для записи-вывода используется кодировка текста UTF-16, которая составляет 2 байта на символ. Когда вы имеете дело с текстом, который вписывается в диапазон кодовой страницы ASCII, 2-й байт каждого символа будет равен нулю.
Это управляется глобальной переменной $OutputEncoding
, поэтому вы можете установить ее в ASCII.
Другой вариант - использовать командлет Out-File с явным параметром кодирования. Я бы посоветовал вам использовать это вместо перенаправления вывода, потому что это избавляет вас от глобального изменения среды (путем установки глобальной переменной предпочтения $OutputEncoding
)
Используя Out-File и установив кодировку ASCII, ваш пример будет выглядеть так:
"abcd" | out-file "mytext.txt" -Encoding ASCII
Имейте в виду, что не все символы представимы в ASCII, и вам следует определить, является ли это подходящей кодировкой для ваших целей. Лично я обычно выбираю UTF-8, поскольку он эквивалентен ASCII, когда символы попадают в диапазон ASCII от 0 до 127, но также обрабатывает международные символы. Обязательная ссылка на кодировку текста .