在獲得一些隨機西班牙報紙的索引正確使用的WebRequest我不明白的發音符號,它們產生這種怪異的性格:�
,同時採用了WebClient
我得到相應的響應下載來自同一個URI的響應。使用WebClient和WebRequest編碼區別?
爲什麼這種差異?
var client = new WebClient();
string html = client.DownloadString(endpoint);
VS
WebRequest request = WebRequest.Create(endpoint);
using (WebResponse response = request.GetResponse())
{
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
string html = reader.ReadToEnd();
}
我猜測,但它可能是因爲'WebClient.DownloadString'着眼於'內容type'管器(例如「text/html的;字符集= UTF-16」)來推斷編碼,但您的WebRequest方法使用UTF8(StreamReader的默認值) – spender
在這種情況下,'content-type'頭文件沒有指定字符集。 – bevacqua
@Nico。然後,它應該做的測試爲UTF-8,UTF-16LE,UTF-16BE和UTF-32根據預先同步碼(檢測BOM和其他告訴-故事),最後將默認爲默認遺留字符集,這恰好匹配您的機器上的網站。由於HTTP假設拉丁-1(畢竟,這是90年代初),它可能是明智地使用,作爲你的「我不知道」的選擇。 –