【问题标题】:How can I Force or Specify Encoding type using Xml.Save?如何使用 Xml.Save 强制或指定编码类型?
【发布时间】:2015-07-27 18:14:30
【问题描述】:

我正在使用 PowerShell 修改一个 XML 配置文件,当我使用 Xml.Save 保存文件时,它会更改编码类型。

当我打开我试图在 Notepad++ 中编辑的原始文件时,编码类型被列为“UTF-8 without BOM”。当我在使用 Xml.Save 编辑之后在 Notepad++ 中打开文件时,编码类型被简单地列为“UTF-8”。这会导致使用此文件的程序出错,说它无法解析为配置属性。

如果我在 Notepad++ 中打开 EDITED 文件,请将编码类型更改为“UTF-8 without BOM”,然后保存文件。然后程序将正常运行。

如何在保存文件时强制或指定Xml.Save 使用“UTF-8 without BOM”编码类型?

我尝试了不同的转换和保存文件的方法,但Xml.Save 似乎默认为“UTF-8”编码类型。

$xml = New-Object -TypeName XML
$xml.Load($file)
$xml.configuration.config.option = $newValue
$xml.Save($file)

【问题讨论】:

    标签: xml powershell


    【解决方案1】:

    这似乎可以解决问题。当然可以有更优雅的方式......

    $xml = New-Object -TypeName XML
    $xml.Load($file)
    $xml.configuration.config.option = $newValue
    
    $utf8WithoutBom = New-Object System.Text.UTF8Encoding($false)
    $sw = New-Object System.IO.StreamWriter($file, $false, $utf8WithoutBom)
    
    $xml.Save( $sw )
    $sw.Close()
    

    hereherehere 收集的详细信息。

    【讨论】:

    • 有趣!我找到了一个基本使用相同方法的类似解决方案。它确实有效,但有趣的是,在我保存文件并在 Notepad++ 中打开它后,它会将文件列为具有“ANSI”编码的文件。就像你说的,我希望有更优雅的东西,但这确实有效,所以谢谢!
    • @user1770228 当我回答您的original question 时,我想出了相同的解决方案。我在 Notepad++ 中打开了测试的输出文件,它显示“UTF-8 without BOM”作为编码。
    猜你喜欢
    • 2019-10-04
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多