Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpWebResponse的编码问题_C#_.net_Encoding_Httpwebrequest - Fatal编程技术网

C# HttpWebResponse的编码问题

C# HttpWebResponse的编码问题,c#,.net,encoding,httpwebrequest,C#,.net,Encoding,Httpwebrequest,从http web响应接收到的字符编码有问题,我收到的是?,而不是é 我根据网页的Content-Type设置编码,即text/javascript;字符集=ISO-8859 我的代码是: HttpWebRequest request = (HttpWebRequest)WebRequest.Create(..); request.Method = "GET"; request.AllowAutoRedirect = false; request.Referer = "Mozilla/5.0 (

从http web响应接收到的字符编码有问题,我收到的是
,而不是
é

我根据网页的
Content-Type
设置编码,即
text/javascript;字符集=ISO-8859

我的代码是:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(..);
request.Method = "GET";
request.AllowAutoRedirect = false;
request.Referer = "Mozilla/5.0 (Windows NT 6.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1";
request.Headers.Add("DNT", "1");
request.Accept = "text/html,application/xhtml+xml,application/xml";

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader sr = new StreamReader(stream, Encoding.GetEncoding("iso-8859-1"));

char[] buf = new char[256];
int count;
StringBuilder buffer = new StringBuilder();

while ((count = sr.Read(buf, 0, 256)) > 0)
{
    buffer.Append(buf, 0, count);
}

string responseStr = buffer.ToString();
Console.WriteLine(responseStr);
response.Close();
stream.Close();
sr.Close();

你能告诉我它有什么问题吗?

你试过将它设置为UTF-8吗? 此外,您还发送了一个推荐人,我认为您试图设置UserAgent。下面的代码与您的代码相同,但不会遍历字节数组并设置useragent和utf8编码

var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.AllowAutoRedirect = false;
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1";
request.Headers.Add("DNT", "1");
request.Accept = "text/html,application/xhtml+xml,application/xml";

using(var response = (HttpWebResponse)request.GetResponse())
using(var stream = response.GetResponseStream())
using (var sr = new StreamReader(stream, Encoding.UTF8))
{
    string responseStr = sr.ReadToEnd();
    Console.WriteLine(responseStr);
    response.Close();
    if (stream != null)
        stream.Close();
    sr.Close();
}

在提出请求之前,请尝试添加以下内容:

request.Headers.Add(HttpRequestHeader.AcceptCharset, "ISO-8859-1");

顺便说一句,如果你想尝试我建议的解决方案,你应该让你的StreamReader使用ISO-8859-1(而不是UTF8)。祝你好运

你有没有检查过,顺便说一句,这有一个很好的解释,当utf8不工作时如何读取不同的编码:我会检查链接。谢谢。可能服务器做错了什么,请看下面这个例子:然后您可以尝试切换到:使用(var sr=new StreamReader(stream,Encoding.GetEncoding(1252)))