【问题标题】:encoding issues with content in response from HttpWebRequest响应来自 HttpWebRequest 的内容编码问题
【发布时间】:2011-05-23 22:23:18
【问题描述】:

我正在使用 HttpWebRequest 使用以下代码读取网页:

 var pageurl = new Uri(url, UriKind.Absolute);

        var request = (HttpWebRequest)WebRequest.Create(pageurl);
        request.Method = "GET";
        request.AutomaticDecompression = DecompressionMethods.GZip;
        request.KeepAlive = false;
        request.ConnectionGroupName = Guid.NewGuid().ToString();
        request.ServicePoint.Expect100Continue = false;
        request.Pipelined = false;
        request.MaximumResponseHeadersLength = 4;

        if (ignoreCertificateErrors)
        {
            ServicePointManager.ServerCertificateValidationCallback += AcceptAllCertificatePolicy;
        }

        var response = (HttpWebResponse)request.GetResponse();


    if (response != null)
        {
            using (var reader = new StreamReader(response.GetResponseStream()))
            {
                return reader.ReadToEnd();
            }
        }

当传递的语言是英语时,这非常有效,但是当另一种语言(如西班牙语)时,我会在返回的内容中得到很多。

代码有问题还是我缺少一些编码明智的东西?

【问题讨论】:

  • I get numerous in the returned content众多什么?

标签: c# asp.net httpwebrequest webrequest httpwebresponse


【解决方案1】:

您必须为要下载到StreamReader 的页面指定正确的编码。例如,如果页面采用 ISO-8859-2 编码,则使用

new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("ISO-8859-2"))

【讨论】:

  • 这是我过去几天一直在寻找的确切答案和解决方案。我正在使用 WebClient,如果我设置 webClient.Encoding = Encoding.GetEncoding("ISO-8859-1"); 我没有任何问题但这在 HttpWebRequest 上由于某种原因不起作用,即使我试图将 iso 字节转换为 utf 字节。直接在 streamReader 上应用编码解决了我遇到的特殊字符问题,再次感谢!
  • 您可以从response.CharacterSet 确定实际响应编码(需要转换为HttpWebResponse)。
猜你喜欢
  • 1970-01-01
  • 2018-10-13
  • 2016-02-21
  • 2020-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多