[英]C# - WebClient.DownloadString does not detect response encoding
當我使用WebClient
類時,我注意到一個像這樣的簡單調用
string downloadedString = new WebClient().DownloadString("http://whatever");
即使響應包含正確的Content-Type
標頭application/json; charset=utf-8
,也會使用錯誤的編碼生成字符串application/json; charset=utf-8
application/json; charset=utf-8
。
當我查看源代碼時,我發現DownloadString
根本沒有查看響應頭。 相反,它使用request.ContentType
,如果那里不存在字符集,則使用Encoding
屬性(必須事先設置,否則將是系統的默認值)。
看起來很奇怪,我們必須在發送請求之前專門告訴WebClient
對象要使用哪種編碼(通過添加Content-Type
標頭或直接設置編碼)。 使用DownloadString
變得毫無意義:如果我們想要正確的編碼,則必須使用DownloadData
或普通的WebRequest
並編寫代碼以手動解析響應標頭以獲取正確的響應字符串。
有人知道這種行為的原因嗎? .NET中有比手動解析響應Content-Type
更好的方法來正確下載HTTP字符串響應嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.