2010-01-07 27 views
5

estoy ejecutando el siguiente comando:PowerShell codificación de caracteres de System.Net.WebClient

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

La salida de uno de los elementos RSS contiene este texto raro:

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

Entonces, la pregunta es:

  • ¿Por qué la confusión en los caracteres? ¿Qué pasó con el apóstrofo? ¿Por qué la salida se procesa como Don’t cuando debería aparecer como Don't?
  • ¿Cómo obtendré el carácter correcto en la salida estándar de PowerShell?
+0

esto demuestra un aspecto importante de la interacción PowerShell .Net. Normalmente programo en .Net y no puedo ver esto como una configuración de .Net a realizar. – elgrego

Respuesta

10

Tiene que establecer la propiedad de codificación de la webclient:

$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 
Cuestiones relacionadas