我有編碼問題。當我得到網站的源代碼,我有: HttpWebResponse - 編碼問題
我設置編碼UTF8這樣的:
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string sourceCode = reader.ReadToEnd();
感謝您的幫助!
我有編碼問題。當我得到網站的源代碼,我有: HttpWebResponse - 編碼問題
我設置編碼UTF8這樣的:
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string sourceCode = reader.ReadToEnd();
感謝您的幫助!
但是,響應可能不是UTF-8。您是否檢查過響應對象的CharacterSet
和ContentType
屬性以確保您使用正確的編碼?
在任何情況下,這兩個字符看起來都像代碼頁437個字符,用於值03和08.它看起來像是數據流中有一些二進制數據。
我建議,爲了調試,您使用Stream.Read
將響應中的前幾個字節讀取到字節數組中,然後檢查值以查看所得結果。
嘗試使用指定的編碼:
Encoding encoding = Encoding.UTF8;
try
{
if (response != null && !string.IsNullOrEmpty(response.CharacterSet))
encoding = Encoding.GetEncoding(response.CharacterSet);
}
catch (ArgumentException)
{
// Cannot determine encoding, use assigned above
}
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;
更改這一行代碼:
using (StreamReader streamReader = new StreamReader(stream, Encoding.GetEncoding(1251)))
它可以幫助你..
我有同樣的問題,我試着改變編碼,從源頭到結果,我什麼都沒有。在最後,我遇到一個線程這導致我下面...... 採取看看這裏... .NET: Is it possible to get HttpWebRequest to automatically decompress gzip'd responses?
你需要使用下面的代碼,從檢索請求的響應之前。
rqst.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
,因爲一旦我們使用接受編碼「的gzip」或「放氣」,數據得到了壓縮,而轉向由我們不可讀的數據。所以我們需要解壓縮它們。
您確定您從流中獲取的數據具有UTF8編碼嗎?它似乎不是真的 – 2011-04-22 13:08:28
我使用螢火蟲來檢查編碼。 Content-Type:text/html; charset = UTF-8 – carck3r 2011-04-22 14:40:34
我不得不使用Accept-Encoding標頭註釋此行。有用。 – carck3r 2011-05-03 13:25:39