簡體   English   中英

HttpWebResponse - 編碼問題

[英]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。 您是否檢查了響應對象的CharacterSetContentType屬性,以確保使用正確的編碼?

無論如何,這兩個字符看起來像值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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM