Conversione XML da UTF-16 a PowerShell UTF-8 usando
-
09-09-2019 - |
Domanda
Qual è il modo più semplice per convertire XML da UTF16 in un file codificato UTF8?
Soluzione
Questo non può essere il più ottimale, ma funziona. Basta caricare il xml e spingerlo indietro in un file. l'intestazione xml è perduto però, quindi questo deve essere ri-aggiunto.
$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;
}
Altri suggerimenti
Beh, credo che il modo più semplice è quello di non solo preoccuparsi se il file è XML o meno e semplicemente convertire:
Get-Content file.foo -Encoding Unicode | Set-Content -Encoding UTF8 newfile.foo
Questo funziona solo per XML quando non c'è
<?xml version="1.0" encoding="UTF-16"?>
Linea.
Prova questa soluzione che utilizza una 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)
}
Si consiglia di guardare XMLDocument
maggiori spiegazioni su CreateXmlDeclaration
.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow