我正在使用以下Powershell脚本将字符串转换为XML,然后导出到文件(以此方式来保留缩进):
[xml]$xmloutput = $xml
$sw = New-Object System.IO.StringWriter
$writer = New-Object System.Xml.XmlTextWriter($sw)
$writer.Formatting = [System.Xml.Formatting]::Indented
$xmloutput.WriteContentTo($writer)
$sw.ToString() | Set-Content -Encoding 'ASCII' $filepath
由于供应商的限制,目标必须是ASCII格式。我遇到的问题是ASCII只会将特殊字符转换为问号(例如:Ö变成?)。
如果我使用UTF8编码,则输出看起来完全正常。我甚至尝试过先保存为UTF8然后再转换为ASCII,但仍然会出现同样的问题(导出问号):
[System.Io.File]::ReadAllText($filepath) | Out-File -FilePath $filepath -Encoding ASCII
如果在将字符串转换为XML之前尝试替换字符(使用ASCII代码Ö
),它只会转换和保留剩余的和号,使其无用。
有没有办法让Powershell正确地将这些字符保存到文件中?
编辑:我想在输出的文件中看到特殊字符,但如果那不符合ASCII标准,我希望看到它的ASCII代码(例如Ö
)
我也不想只看到一个O,我需要实际的字符。
Ö
。 - chazbot7Out-File -FilePath $filepath -Encoding default
时,应该可以工作,因为它使用的是 ANSI 代码页。 - Squashman