Qual è il modo più semplice per convertire XML da UTF16 a un file con codifica UTF8?Conversione di xml da UTF-16 a UTF-8 usando PowerShell
risposta
Questo potrebbe non essere il più ottimale, ma funziona. Basta caricare l'xml e reinserirlo in un file. l'intestazione xml è persa, quindi questo deve essere aggiunto nuovamente.
$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;
}
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.
Se si desidera eseguire l'operazione senza creare un nuovo file, è possibile racchiudere tra parentesi il contenuto get: (Get-Content File.foo) | Set-Content -Encoding UTF8 File.foo – Jaykul
Come si fa per i file in una directory e sottodirectory? – stormwild
'gci -rec -fi * | % {(gc $ _ -enc unicode) | set-content -enc utf8 $ _. fullname} '. Abbastanza semplice, in realtà. – Joey
Prova questa soluzione che utilizza un 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
.
Grazie mille per la cura di fornire una risposta così breve, tecnicamente migliore, a una domanda così vecchia! – gimpf
Ho dovuto farlo e ho trovato questa soluzione ancora prima di vedere questa domanda. Sentivo che era normale offrirlo. Con poco sforzo, qualcuno può persino usarlo per copiare durante la conversione della codifica dei file. Saluti. – LMA1980
Non dovresti impostare esplicitamente la codifica per salvare da qualche parte? – Joey
Se sapessi come, lo farei. Tuttavia, sembra essere l'impostazione predefinita. –
-Parametro di codifica. – JasonMArcher