如何设置编码
How to set Encoding
我写了一个带有一些功能的小文件连接程序,一切正常,但我必须将输出文件的编码设置为没有 bom 的 utf8。我试图在程序开头添加这一行“$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'”,但结果是我得到了一个带有 bom 的 utf8。我试过使用 -Encoding utf8NoBOM 但没有用(我有错误)。我在 PS 版本 5.What 上工作我应该如何获得没有 bom 的 UTF8?
如果您使用的是 PowerShell 版本 7.X,您只需将参数 -Encoding utf8NoBOM
添加到 Add-Content
。
如果你的版本低于7.X,你可以使用这个:
# The StreamWriter class by default uses Utf8 without BOM encoding
# get a StreamWriter to a new or existing file to append text to
$streamWriter = [System.IO.File]::AppendText('D:\Test\Blah.txt')
# or if you want to overwrite an existing file, use this
# $streamWriter = [System.IO.File]::CreateText('D:\Test\Blah.txt')
# or this:
# $streamWriter = [System.IO.StreamWriter]::new('D:\Test\Blah.txt', $true) # $true for Append
接下来用这个代替 Add-Content
来写你的内容
$streamWriter.WriteLine("blah something that needs UTF8: €")
所有写入完成后,关闭文件并释放 StreamWriter 对象
$streamWriter.Dispose()
我写了一个带有一些功能的小文件连接程序,一切正常,但我必须将输出文件的编码设置为没有 bom 的 utf8。我试图在程序开头添加这一行“$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'”,但结果是我得到了一个带有 bom 的 utf8。我试过使用 -Encoding utf8NoBOM 但没有用(我有错误)。我在 PS 版本 5.What 上工作我应该如何获得没有 bom 的 UTF8?
如果您使用的是 PowerShell 版本 7.X,您只需将参数 -Encoding utf8NoBOM
添加到 Add-Content
。
如果你的版本低于7.X,你可以使用这个:
# The StreamWriter class by default uses Utf8 without BOM encoding
# get a StreamWriter to a new or existing file to append text to
$streamWriter = [System.IO.File]::AppendText('D:\Test\Blah.txt')
# or if you want to overwrite an existing file, use this
# $streamWriter = [System.IO.File]::CreateText('D:\Test\Blah.txt')
# or this:
# $streamWriter = [System.IO.StreamWriter]::new('D:\Test\Blah.txt', $true) # $true for Append
接下来用这个代替 Add-Content
$streamWriter.WriteLine("blah something that needs UTF8: €")
所有写入完成后,关闭文件并释放 StreamWriter 对象
$streamWriter.Dispose()