我有一个正在使用 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 = 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()
关于xml - 如何使用 Xml.Save 强制或指定编码类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30265973/