2010-01-07 47 views
5

Tôi đang chạy lệnh sau:mã hóa ký tự PowerShell từ System.Net.WebClient

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

Các đầu ra cho một trong các mục RSS có chứa văn bản kỳ lạ này:

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

Vì vậy, câu hỏi là:

  • Tại sao lại kết hợp các ký tự? Điều gì đã xảy ra với dấu nháy đơn? Tại sao đầu ra được hiển thị là Don’t khi kết xuất chỉ hiển thị là Don't?
  • Làm cách nào để có được ký tự chính xác trong đầu ra tiêu chuẩn PowerShell?
+0

này cho thấy một khía cạnh quan trọng của sự tương tác PowerShell Net. Tôi thường lập trình. Net và không xem được cài đặt này .Net sẽ được thực hiện. – elgrego

Trả lời

10

Bạn cần phải thiết lập thuộc tính mã hóa của 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 
Các vấn đề liên quan