2010-01-07 34 views
5

我运行下面的命令:PowerShell的字符编码从System.Net.WebClient

([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标准输出中获得正确的字符?
+0

这说明PowerShell的净互动的一个重要方面。 我通常在.Net中编程,并且未能将其视为要设置的.Net设置。 – elgrego 2010-01-09 07:26:31

回答

10

你需要设置Web客户端的编码属性:

$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