2010-01-07 8 views
5

J'exécutant la commande suivante:caractère powershell encodage 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 sortie pour l'un des éléments RSS contient ce texte étrange:

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

Ainsi, la question est:

  • Pourquoi le mélange des caractères? Qu'est-il arrivé à l'apostrophe? Pourquoi la sortie est-elle rendue Don’t alors qu'elle devrait simplement afficher Don't?
  • Comment obtenir le caractère correct dans la sortie standard PowerShell?
+0

cela montre un aspect important de l'interaction .Net Powershell. Je programme habituellement en .Net et je n'ai pas réussi à voir cela comme un réglage .Net à faire. – elgrego

Répondre

10

Vous devez définir la propriété de codage 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