Conversion de xml de UTF-16 en UTF-8 à L'aide de PowerShell
Quelle est la façon la plus facile de convertir XML de UTF16 à un fichier encodé UTF8?
18
                
            
                demandé sur
                David Gardiner
                2009-04-15 09:45:07
            
        3 réponses
ce n'est peut-être pas le meilleur, mais ça marche. Il suffit de charger le xml et de le repousser dans un fichier. le titre xml est perdu, il faut donc le rajouter.
$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;
}
14
	                    
	                
	                    répondu
	                    Ben Laan
	                    2012-06-08 05:12:05
	                
	            Eh bien, je suppose que la façon la plus facile est de tout simplement ne pas se soucier de savoir si le fichier est XML ou non et tout simplement convertir:
Get-Content file.foo -Encoding Unicode | Set-Content -Encoding UTF8 newfile.foo
cela ne fonctionnera que pour XML quand il n'y a pas de
<?xml version="1.0" encoding="UTF-16"?>
ligne.
13
	                    
	                
	                    répondu
	                    Joey
	                    2012-06-08 05:10:46
	                
	            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.
9
	                    
	                
	                    répondu
	                    LMA1980
	                    2012-10-21 11:41:39