从UTF-16转换XML来使用UTF-8的PowerShell
-
09-09-2019 - |
题
什么是XML从UTF-16转换为UTF-8编码的文件最简单的方法?
解决方案
这可能不是最优化的,但它的工作原理。只需加载XML和推回了一个文件。的XML航向虽然丢失,所以这必须被重新添加。
$files = get-ChildItem "*.xml"
foreach ( $file in $files )
{
[System.Xml.XmlDocument]$doc = new-object System.Xml.XmlDocument;
$doc.set_PreserveWhiteSpace( $true );
$doc.Load( $file );
$root = $doc.get_DocumentElement();
$xml = $root.get_outerXml();
$xml = '<?xml version="1.0" encoding="utf-8"?>' + $xml
$newFile = $file.Name + ".new"
Set-Content -Encoding UTF8 $newFile $xml;
}
其他提示
唉,我想最简单的方法是只不关心文件是否是XML与否,只是转换:
Get-Content file.foo -Encoding Unicode | Set-Content -Encoding UTF8 newfile.foo
此将只对XML工作的时候没有
<?xml version="1.0" encoding="UTF-16"?>
线。
尝试这种解决方案使用一个XmlWriter
:
$encoding="UTF-8" # most encoding should work
$files = get-ChildItem "*.xml"
foreach ( $file in $files )
{
[xml] $xmlDoc = get-content $file
$xmlDoc.xml = $($xmlDoc.CreateXmlDeclaration("1.0",$encoding,"")).Value
$xmlDoc.save($file.FullName)
}
您可能想看看XMLDocument
对CreateXmlDeclaration
更多的解释。
不隶属于 StackOverflow