Conversion xml de UTF-16 à UTF-8 en utilisant PowerShell
-
09-09-2019 - |
Question
Quelle est la meilleure façon de convertir XML à partir UTF16 dans un fichier UTF8?
La solution
Ce ne peut pas être la plus optimale, mais il fonctionne. Il suffit de charger le fichier XML et le repousser vers un fichier. la rubrique xml est perdu, donc cela doit être à nouveau ajouté.
$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;
}
Autres conseils
Eh bien, je suppose que le plus simple est de tout simplement pas se soucier de savoir si le fichier est XML ou non et convertir simplement:
Get-Content file.foo -Encoding Unicode | Set-Content -Encoding UTF8 newfile.foo
Cela ne fonctionnera que pour XML quand il n'y a pas
<?xml version="1.0" encoding="UTF-16"?>
ligne.
Essayez cette solution qui utilise 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)
}
Vous pouvez regarder XMLDocument
pour plus d'explications sur CreateXmlDeclaration
.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow