c# - HttpWebResponse 导致的奇怪字符

标签 c#

<分区>

我正在尝试为电报机器人创建站点解析器。确切的代码是:

var link = "https://www.detmir.ru/";
var request = HttpWebRequest.Create(link);
var resp = (HttpWebResponse)request.GetResponse();
string result;
using (var stream = resp.GetResponseStream())
{
    using (var reader = new StreamReader(stream, Encoding.GetEncoding(resp.CharacterSet)))
    result = reader.ReadToEnd();
}

File.WriteAllText(@"d:\1.txt", result);

结果是一组奇怪的符号:

Strange symbols pics

据我所知 - 编码的主要线索。我尝试使用 Encoding.Defult、Encoding.UTF8 得到相同的结果。 但是对于其他站点,它可以完美运行。有什么技巧可以解决这个特定网站的问题吗?

更新

在谷歌浏览器中网页的源代码正确显示: Google Chrome webpage source code

最佳答案

响应的内容是 UTF-8,如站点报告的那样,但它被压缩以提高吞吐量性能。

启用自动解压:

var request = (HttpWebRequest)HttpWebRequest.Create(link);
request.AutomaticDecompression = DecompressionMethods.GZip;

关于c# - HttpWebResponse 导致的奇怪字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49508285/

相关文章:

c# - 有没有什么方法可以分析 ASP.NET MVC 中 View 的性能?

c# - 如何防止生成的接口(interface)实现使用类型别名?

c# - Hook API 函数 GetSystemMetrics

c# - 在自定义控件中交换 ContentPresenter 内容

c# - 更新 Google Analytics JavaScript 代码

c# - 如何获取设置为 'Auto' 的 Canvas 元素的宽度和高度?

c# - HTTPWebResponse 响应字符串被截断

c# - 使用基类中的方法确定子类的程序集

c# - 使用 C# 在 asp.net 网页的最后一个字符中将焦点设置在文本框中

使用正则表达式按规则进行 C# 字符串操作