PowerShell字符编码来自System.Net.WebClient

5
我正在运行以下命令:
([xml](new-object net.webclient).DownloadString(
"http://blogs.msdn.com/powershell/rss.aspx"
)).rss.channel.item | format-table title,link

其中一个RSS项的输出包含了这个奇怪的文本:

You Don’t Have to Be An Administrator to Run Remote PowerShell Commands

因此,问题是:

  • 为什么字符混淆了?撇号去哪了?为什么输出呈现为Don’t而不是Don't
  • 如何在PowerShell标准输出中获得正确的字符?

这展示了PowerShell与.Net交互的一个重要方面。我通常使用.Net编程,但未能将其视为需要进行的.Net设置。 - elgrego
1个回答

11

您需要设置WebClient的encoding属性:

$wc = New-Object System.Net.WebClient
$wc.Encoding = [System.Text.Encoding]::UTF8
([xml]$wc.DownloadString( "http://blogs.msdn.com/powershell/rss.aspx" )).rss.channel.item | format-table title,link

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接