Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Xml.Save强制或指定编码类型?_Xml_Powershell - Fatal编程技术网

如何使用Xml.Save强制或指定编码类型?

如何使用Xml.Save强制或指定编码类型?,xml,powershell,Xml,Powershell,我有一个使用PowerShell修改的XML配置文件,当我使用XML保存该文件时,“保存”会更改编码类型 当我打开我试图在记事本++中编辑的原始文件时,编码类型被列为“UTF-8无BOM”。当我使用Xml编辑后在Notepad++中打开文件时。保存编码类型仅列为“UTF-8”。这会导致使用此文件的程序出错,表示无法解析为配置属性 如果我在Notepad++中打开编辑过的文件,将编码类型更改为“UTF-8无BOM”,然后保存该文件。然后程序将无误运行 如何强制和或指定Xml.Save以在保存文件时

我有一个使用PowerShell修改的XML配置文件,当我使用XML保存该文件时,“保存”会更改编码类型

当我打开我试图在记事本++中编辑的原始文件时,编码类型被列为“UTF-8无BOM”。当我使用Xml编辑后在Notepad++中打开文件时。保存编码类型仅列为“UTF-8”。这会导致使用此文件的程序出错,表示无法解析为配置属性

如果我在Notepad++中打开编辑过的文件,将编码类型更改为“UTF-8无BOM”,然后保存该文件。然后程序将无误运行

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

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

$xml=新对象-类型名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()

从和收集的详细信息。

有趣!我发现了一个基本上使用相同方法的类似解决方案。它确实可以工作,但有趣的是,在我保存文件并在Notepad++中打开它之后,它将文件列为具有“ANSI”编码。就像你说的,我希望有更优雅的东西,但这确实有效,所以谢谢你@user1770228当我回答你的问题时,我提出了同样的解决方案。我在Notepad++中打开了测试的输出文件,它显示“UTF-8无BOM”作为编码。