PowerShellを使用してUTF-8にUTF-16からXMLを変換します
-
09-09-2019 - |
質問
UTF8エンコードされたファイルにUTF16からXMLを変換する最も簡単な方法は何でしょうか。
解決
このは最適ではないかもしれないが、それは動作します。単純に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;
}
他のヒント
まあ、私は最も簡単な方法は、単にファイルがXMLであるかどうかを気にして、単純に変換しないことです推測します
Get-Content file.foo -Encoding Unicode | Set-Content -Encoding UTF8 newfile.foo
何のが存在しない場合、これはXMLのために動作します
<?xml version="1.0" encoding="UTF-16"?>
行ます。
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
を見てみたいことがあります。
所属していません StackOverflow