[英]HttpWebResponse - Encoding problem
我有編碼問題。 當我得到網站的源代碼時,我有:
我將編碼設置為UTF8,如下所示:
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string sourceCode = reader.ReadToEnd();
謝謝你的幫助!
嘗試使用指定的編碼:
Encoding encoding;
try
{
encoding = Encoding.GetEncoding(response.CharacterSet);
}
catch (ArgumentException)
{
// Cannot determine encoding, use dafault
encoding = Encoding.UTF8;
}
StreamReader reader = new StreamReader(response.GetResponseStream(), encoding);
string sourceCode = reader.ReadToEnd();
如果你以某種方式接受gzip,這可能有所幫助:(自己沒有嘗試過,並且承認它沒有多大意義,因為你的編碼不是gzip ?!)
request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
但響應可能不是UTF-8。 您是否檢查了響應對象的CharacterSet
和ContentType
屬性,以確保使用正確的編碼?
無論如何,這兩個字符看起來像值03和08的代碼頁437個字符。看起來你的數據流中有一些二進制數據。
我建議你進行調試,使用Stream.Read
將響應中的前幾個字節讀入一個字節數組,然后檢查這些值,看看你得到了什么。
我有同樣的問題,我嘗試改變編碼,從源頭到結果,我什么也沒得到。 最后我遇到了一個引導我跟隨的線程......看看這里...... .NET:是否有可能讓HttpWebRequest自動解壓縮gzip的響應?
在從請求中檢索響應之前,您需要使用以下代碼。
rqst.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
因為一旦我們使用接受編碼'gzip'或'deflate',數據就會被壓縮,並轉向我們無法讀取的數據。 所以我們需要解壓縮它們。
在代碼中更改此行:
using (StreamReader streamReader = new StreamReader(stream, Encoding.GetEncoding(1251)))
它可能會幫助你..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.