【问题标题】:How to set Encoding [duplicate]如何设置编码[重复]
【发布时间】:2021-08-27 11:17:07
【问题描述】:

我编写了一个带有一些功能的小文件连接程序,一切正常,但我必须将输出文件的编码设置为没有 bom 的 utf8。我试图在程序的开头添加这一行“$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'”,但结果是我有一个带有 bom 的 utf8。我尝试使用 -Encoding utf8NoBOM 但不起作用(我有错误)。我在 PS 版本 5 上工作。我应该怎么做才能在没有 bom 的情况下获得 UTF8?

【问题讨论】:

  • UTF-8 不需要 BOM。
  • @Raedwald 我知道,但是我想得到这个。如果我运行我的脚本,然后检查输出文件编码(在记事本中),我会看到带有 bom 的 UTF-8,我想获得没有 bom 的 utf-8

标签: encoding


【解决方案1】:

如果您使用的是 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()

【讨论】:

    猜你喜欢
    • 2014-11-10
    • 2013-02-02
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    • 2021-08-07
    • 2014-05-14
    • 2018-01-23
    相关资源
    最近更新 更多