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

标签 xml powershell

我有一个正在使用 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()

here 收集的详细信息, herehere .

关于xml - 如何使用 Xml.Save 强制或指定编码类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30265973/

相关文章:

php - ResponseXML 返回 null 或未定义

powershell - 从PowerShell中的列表中选择一个项目

powershell - 获取另一个域的所有ADcontroller

windows - 在 Visual Studio 中将 PowerShell 脚本作为构建事件运行的最简单/最短命令

powershell - 如何读取从 terraform 传递到 powershell userdata 脚本的 Map 类型变量的值?

xml - 如何使用数据类型构造函数包装来自 HXT 的整个匹配列表?

java - 使用 nodeList 创建 XML 文档

powershell - 在foreach循环中重用变量

php - 正则表达式:从部分字符串中删除换行符 (PHP)

java - 如何从xml文件中获取值和路径?