others - 在PowerShell中,如何重定向输入?

我正试图重定向PowerShell中的输入


Get-Content input.txt | my-program args



问题是管道UTF-8文本前面有一个BOM (0xefbbbf ),程序无法正确处理,有没有办法在不生成BOM的情况下重定向输入,或者有什么解决方法?

时间:

试试这个:


Get-Content input.txt | Set-Content input_temp.txt -Encoding UTF8NoBOM


Get-Content input_temp.txt | my-program args


Remove-Item input_temp.txt



你可以尝试将OutputEncoding设置为UTF8,而无需BOM:


# keep the current output encoding in a variable


$oldEncoding = [console]::OutputEncoding


# set the output encoding to use UTF8 without BOM


[console]::OutputEncoding = New-Object System.Text.UTF8Encoding $false



Get-Content input.txt | my-program args



# reset the output encoding to the previous


[console]::OutputEncoding = $oldEncoding



...