powershell 修改xml文件,不能以,WINDOWS-31J方式保存。
得到的XML文件的第一句是:
<?xml version="1.0" encoding="WINDOWS-31J"? >
执行:
PS D:> [xml]$x = Get-Content .\file.xml
PS D:> $x.Save(".file.xml")
结果:
Exception calling "Save" with "1" argument(s): "'WINDOWS-31J' is not a supported encoding name. For information on defi
ning a custom encoding, see the documentation for the Encoding.RegisterProvider method.
修改后 ,没有乱码。 用比较工具比较, 除了自己修改的地方以外,都是一致就行。 windows31j的结果不能改 当然如果能临时改一下 并且不影响结果的方法也行 谢谢大家了
建议:
1、在调用 Save 方法时,可以传入一个参数来指定保存时使用的编码。例如可以使用 $x.Save(".file.xml", [System.Text.Encoding]::UTF8) 来保存 XML 文件时使用 UTF-8 编码。
2、如果希望保留原有的编码,可以在读取 XML 文件时使用 [xml]$x = Get-Content .\file.xml -Encoding Byte,这样 $x 对象就会保留原有的编码。然后在保存时就不需要再传入编码参数了。
3、如果以上方法都不能解决问题,可以考虑使用 .NET 类库中的 XmlDocument 类来读取和保存 XML 文件。这个类可以更精确地控制 XML 文件的编码:
$xmlDoc = New-Object System.Xml.XmlDocument
$xmlDoc.Load(".\file.xml")
$xmlDoc.Save(".\file.xml")
仅供参考,望采纳,谢谢。
把xml文件另存为utf-8编码,代码encoding="WINDOWS-31J"改成encoding="UTF-8"
To save an XML file in the WINDOWS-31J encoding using PowerShell, you can use the following code:
$xml = [xml] "value"
$xml.Save("C:\path\to\file.xml") -Encoding WINDOWS-31J
This will create an XML object in memory, set the encoding to WINDOWS-31J, and then save the file to the specified location using the WINDOWS-31J encoding.
$xml = [xml]@"
<root>
<element>value</element>
</root>
"@
$encoding = [System.Text.Encoding]::GetEncoding("windows-31j")
$xml.Save("C:\path\to\file.xml", $encoding)
在这段代码中,首先使用 [xml] 转换器将字符串转换为 XmlDocument 对象,然后使用 GetEncoding() 方法获取 WINDOWS-31J 编码的 Encoding 对象。接着使用 XmlDocument 对象的 Save() 方法将 XML 保存到文件中,并传入获取的 Encoding 对象作为参数。
这样,就可以使用 PowerShell 将 XML 文件以 WINDOWS-31J 编码方式保存到磁盘上了。
借鉴下
https://blog.csdn.net/winterye12/article/details/107332221/
如果你希望在 Powershell 中将 XML 文件的编码修改为 utf-8,可以使用以下代码:
[xml]$x = Get-Content .\file.xml
$x.Encoding = "utf-8"
$x.Save(".\file.xml")
在这里,我们首先读取了 XML 文件内容,然后将其 Encoding 属性修改为 utf-8,最后使用 Save 方法将修改后的内容保存回文件中。
如果你希望将 XML 文件的编码修改为其他编码方式,只需要将上面的代码中的 "utf-8" 替换为你希望的编码即可。
由于powershell不支持WINDOWS-31J编码,所以在使用powershell保存XML文件时会出现错误。
要解决这个问题,我们可以使用以下方法:
1 将XML文件转换为其他编码,然后使用powershell保存。例如,可以将XML文件转换为UTF-8编码,然后使用powershell保存。
2 使用其他工具保存XML文件。例如,可以使用文本编辑器打开XML文件,然后将其保存为WINDOWS-31J编码。
3 使用其他编程语言保存XML文件。例如,可以使用C#、Java或其他语言写一个程序来保存XML文件。
希望对你有帮助!望采纳。
编码错误,将xml转换为utf-8即可
首先读取 XML 文件的编码方式不是 WINDOWS-31J,而是 Shift_JIS。所以,当你使用 Get-Content 读取文件时,实际上是以 Shift_JIS 编码读取的。
在修改 XML 文件内容之后,你可以使用如下命令将 XML 文件以 Shift_JIS 编码保存:
$x.Save(".\file.xml", [System.Text.Encoding]::GetEncoding('shift_jis'))
或者,你也可以使用如下命令将 XML 文件以 UTF-8 编码保存:
$x.Save(".\file.xml", [System.Text.Encoding]::UTF8)
在保存时使用不同的编码方式,可以避免出现乱码问题。
希望对你有帮助,望采纳。