Umwandeln von XML UTF-16 in UTF-8 unter Verwendung von Power
-
09-09-2019 - |
Frage
Was ist der einfachste Weg, XML von UTF16 zu einer UTF8 codierten Datei zu konvertieren?
Lösung
Dies ist vielleicht nicht die optimalste, aber es funktioniert. Laden Sie einfach die XML und drücken Sie sie in eine Datei zurück. die xml Überschrift ist zwar verloren, so hat dies erneut hinzugefügt werden.
$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;
}
Andere Tipps
Nun, ich denke, der einfachste Weg ist, nur um es egal, ob die Datei XML ist oder nicht, und einfach konvertieren:
Get-Content file.foo -Encoding Unicode | Set-Content -Encoding UTF8 newfile.foo
Dies wird nur für XML arbeiten, wenn kein
<?xml version="1.0" encoding="UTF-16"?>
Zeile.
Versuchen Sie, diese Lösung, die eine XmlWriter
verwendet:
$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)
}
Sie möchten bei XMLDocument
für weitere Erklärung auf CreateXmlDeclaration
suchen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow