使用 WebClient 和 WebRequest 之间的编码差异?

2024-02-18

在获取一些随机的西班牙报纸索引时,我没有使用 WebRequest 正确获取变音符号,它们产生了这个奇怪的字符:,同时使用 a 从同一个 uri 下载响应WebClient我得到了适当的回应。

为什么会出现这种差异化呢?

var client = new WebClient();
string html = client.DownloadString(endpoint);

vs

WebRequest request = WebRequest.Create(endpoint);
using (WebResponse response = request.GetResponse())
{
    Stream stream = response.GetResponseStream();
    StreamReader reader = new StreamReader(stream);
    string html = reader.ReadToEnd();
}

在创建流读取器时,您只是假设实体采用 UTF-8 格式,而没有显式设置编码。您应该检查CharacterSet of the HttpWebResponse(未暴露于WebResponse基类),然后打开StreamReader使用适当的编码。

否则,如果它像读取 UTF-8 一样读取非 UTF-8 的内容,则会遇到在 UTF-8 中无效的八位字节序列,并且必须用 U+FFFD 替换字符进行替换()尽其所能。

WebClient 几乎做了这样的事情:DownloadString是一种更高级别的方法,其中WebRequest及其派生类可让您进入较低层,它有一个调用“向 URI 发送 GET 请求,检查标头以查看正在使用的内容编码,以防您需要取消 gzip 或解压缩它,查看字符编码是什么,使用该编码和流设置文本阅读器,然后调用ReadAll()“。正常的高级大块指令与低级小块指令的优缺点适用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 WebClient 和 WebRequest 之间的编码差异? 的相关文章

随机推荐

  • 为什么 webkit 过滤器悬停时堆叠顺序会发生变化?

    在应用 webkit 过滤器时 我注意到堆叠顺序存在一个奇怪的问题 为什么当我将鼠标悬停在图像上时 堆叠顺序会发生变化 我宁愿不必使用 z 索引来解决此问题 因为它会破坏其他网站元素 这是我的 JSFiddlehttp jsfiddle n
  • React-Native中热重载和快速刷新的区别

    在之前的版本中0 61 of 反应本机为了反映代码更改 我们有两种选择 实时重新加载 检测到某些更改时重新加载应用程序 热重载 反映更改而不重新加载 但在版本中0 61 删除这两个 实时重新加载 热重新加载 引入了一个新的开发人员功能 名为
  • 确定要与 Facebook Open Graph 一起使用的 URL 的 Object_ID

    我正在尝试学习如何使用 Facebook Open Graph API 并对如何确定我网站的 object id 有疑问 我需要这个 object id 以便我可以执行其他查询 例如我想获取在给定时间段内喜欢我的网站的用户列表 根据其他 S
  • 如何在 flutter 中使用分页显示 listview.builder 中的原生广告?

    我使用下面的代码来检索颤振应用程序中的列表 使用分页和 firestore 作为数据库 工作正常 我指的是flutter native admob原生广告的依赖性 但我不知道如何在listview builder同时我需要实现分页 就像在
  • 信号强度中的负dbm是什么意思?

    当我们尝试获取附近的小区及其 LAC MNC 信号 以及使用其他 Android 应用程序时 时 我们得到的信号为负值 例如 85dbm 我该如何接受这个 我应该忽略 ve 符号并取绝对值还是 85 的强度小于 60 这将如何影响我的位置查
  • Instagram 速率限制

    是每个访问令牌或应用程序周期的特定于端点的速率限制 假设我有 100 个应用程序用户 100 个不同的访问令牌 发出关系发布请求 这行不通吗 或者应用程序的每个用户最多 60 个请求 并且应用程序每小时发出的总请求数不超过 5000 个 每
  • 通过 jQuery 禁用所有页面控件

    我正在研究 asp net 和 c 我在页面上使用大量 ASP 和 HTML 控件 在某些情况下 所有控件都会被禁用 一些使用的控件是 RadioButton RadioButtonList CheckBox CheckBoxList Te
  • 当实际身份验证在 ZUUL 网关中完成时,访问微服务中的 Spring Security 主体

    在我们的项目中JWT token验证及其他authorization相关逻辑在ZUUL网关中完成 如果zuul成功验证令牌后 它将继续向相应的微服务发送请求 在这种情况下 我该如何发送Principal到其他微服务 当JWT authori
  • 两个不同商店上的嵌套游标

    我有以下代码 Transaction xodusTransaction xodusEnvironment beginReadonlyTransaction Store leftStore xodusEnvironment openStore
  • WHERE IN (SELECT NonExistingColumnName) 导致意外行为

    我最近遇到一种情况 我需要从表中删除一些行并拼写错误的列名 没有抛出任何错误 并且所有行都已从表中删除 这是重现该问题的脚本 有一个 Order 表 其中包含四个带有 OrderID 的订单 有一个包含一个 ItemID 的 LIST TO
  • 在Configure()之后启动IHostedService

    我有一个 NET Core 3 1 应用程序 它提供一个描述应用程序运行状况的端点 以及一个处理数据库中数据的 IHostedService 但有一个问题 HostedService 的工作函数开始处理很长时间 结果Configure 未调
  • WPF ListView 绑定到列标题

    我正在尝试创建一个动态绑定到一组日期的列表视图 因此 用户将能够选择一个日期范围 所选日期的结果将与列标题中的日期一起显示 我已经解决了所有问题 只有一个问题 日期没有显示在标题中 我有以下内容 我看不出它不起作用的任何原因 public
  • 如何在yii2中过滤日期字段

    我想过滤日期列 例如 3 个月前 6 个月前 1 年前 我在 gridview 的搜索字段中创建了一个下拉菜单 如下所示 attribute gt modified value gt name filter gt array ID1 gt
  • 通过 pip 安装 mysqlclient 时遇到问题

    我正在开发一个 Django 1 9 2 项目 需要连接到 MySQl 数据库 并且我正在尝试使用推荐的 mysqlclient 库 但是 当我尝试通过安装pip install mysqlclient我收到以下错误 Complete ou
  • 最佳圆拟合算法

    I need a very precise algorithm for fitting a circle to the set of data points actually I need to determine the center T
  • 使用 XML 代替 HTML 创建网页有哪些优点?

    有时 我会看到内容仅用 XML 而不是 HTML 或 XHTML 编写的网页 这些页面通常附加一些样式表 XSLT 或 CSS 这使得它们看起来像任何其他普通网页 我的问题是 这种方法有什么优点 如果有的话 为什么有人会选择这种方式 EDI
  • 如何使用 mysqldump 保存 UTF8mb4 数据?

    我正在使用 mysqldump 转储包含带有 UTF8MB4 数据的 UTF8MB4 列的数据库 当我导入这个 sql文件导入到支持 UTF8MB4 的新数据库中 所有 UTF8MB4 字符都会转换为 有人知道如何使 MySQL 和导入与
  • 如何使用 ffmpeg 从 YUV 视频中提取帧(或特定帧)

    这是从a中提取帧的代码MP4视频 ffmpeg i above marathon 250 mp4 images 03d bmp但相同的代码不适用于YUV格式化视频 有谁知道如何从中提取帧YUV格式化视频 它不起作用 因为 yuv 文件没有标
  • SVG矢量图形可以转换为PNG文件格式以便在Fireworks中使用吗?

    众所周知 有很多网站出售免版税图形 有些网站出售矢量图形 svg 或为您提供下载矢量图形的选项 我没有支持 SVG 的图形编辑器 目前 我正在使用旧版本的 Fireworks 我无法打开 SVG 文件类型 我也买不起 PhotoShop 或
  • 使用 WebClient 和 WebRequest 之间的编码差异?

    在获取一些随机的西班牙报纸索引时 我没有使用 WebRequest 正确获取变音符号 它们产生了这个奇怪的字符 同时使用 a 从同一个 uri 下载响应WebClient我得到了适当的回应 为什么会出现这种差异化呢 var client n