19

XML を UTF16 から UTF8 でエンコードされたファイルに変換する最も簡単な方法は何ですか?

4

3 に答える 3

16

最も簡単な方法は、ファイルが XML であるかどうかを気にせず、単純に変換することだと思います。

Get-Content file.foo -Encoding Unicode | Set-Content -Encoding UTF8 newfile.foo

これは、XML がない場合にのみ機能します。

<?xml version="1.0" encoding="UTF-16"?>

ライン。

于 2011-01-27T14:37:47.657 に答える
16

これは最適ではないかもしれませんが、うまくいきます。xml をロードしてファイルにプッシュするだけです。ただし、xml ヘッダーは失われているため、再度追加する必要があります。

$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;
}
于 2009-04-15T05:49:54.553 に答える
9

を使用するこのソリューションを試してください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)      
}

XMLDocumentの詳細については、を参照してくださいCreateXmlDeclaration

于 2012-06-07T13:37:52.550 に答える