2010-01-07 45 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