System.Net.WebClient中的powershell字符编码

elg*_*ego 5 windows powershell encoding

我正在运行以下命令:

([xml](new-object net.webclient).DownloadString(
"http://blogs.msdn.com/powershell/rss.aspx"
)).rss.channel.item | format-table title,link
Run Code Online (Sandbox Code Playgroud)

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

You Don’t Have to Be An Administrator to Run Remote PowerShell Commands
Run Code Online (Sandbox Code Playgroud)

所以,问题是:

  • 为什么要混淆字符?撇号怎么了?为什么输出呈现为Don’t应该呈现为何时Don't
  • 如何在PowerShell标准输出中获得正确的字符?

Fil*_*urt 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
Run Code Online (Sandbox Code Playgroud)