使用 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 之间的编码差异? 的相关文章

  • C++:头文件中全局函数的多重定义错误

    该函数是全局的 在头文件中定义 暂时地我想把它留在那里 头文件还构成一个具有内联函数的特定类 其中一个函数调用this全局函数 源文件不包含任何有问题的全局函数 有关错误原因的任何提示吗 如果有人感兴趣的话我可以发布代码 mainwindo
  • 语言混合:模型和视图

    考虑开发一个应用程序 其中模型将使用 C 使用 Boost 编写 视图将使用 Objective C 使用 Cocoa Touch 编写 哪里有一些示例展示了如何集成 C 和 Objective C 来开发 iPhone 应用程序 直接从源
  • 警告:从指针目标类型中丢弃“const”限定符

    没有const char s意味着 s 是一个指向常量 char 的指针 那么为什么它给我这个警告 我并不是想改变价值观 在第一个函数中警告是return discards const qualifiers from pointer tar
  • 在两个 .cpp 文件之间定义全局变量 [重复]

    这个问题在这里已经有答案了 如何在 A cpp 和 B cpp 之间共享 全球化 bool 变量 其中它们都不包含其他 h 文件 他们有其他联合头文件 但彼此没有 我可以在这些共享标头中定义全局变量吗 Thanks 我可以在这些共享标头中定
  • C#9 顶级语句文件上的属性

    我正在尝试向顶级语句文件添加属性 但没有找到任何相关信息 是否可以 对于某些上下文 我想仅在该文件中禁用规则 SuppressMessage StyleCop CSharp LayoutRules SA1516 ElementsMustBe
  • C/C++ 中随机数生成器的实现[重复]

    这个问题在这里已经有答案了 我对 C 中随机数生成器的实现有点困惑 它也与 C 中的明显不同 如果我理解正确 对 srand seed 的调用会以某种方式初始化可通过 rand 访问的隐藏变量 种子 该变量又将函数指向预先生成的序列 例如例
  • WPF - 按多列排序时使用自定义比较器

    我有一个 ListView GridView 我想按 2 列排序 因此如果第 1 列中有 2 个以上的项目具有相同的值 它将按第 2 列排序 非常简单 但是在对 A Z 进行排序时 空字符串会出现在顶部 我想把它们移到底部 我制作了一个比较
  • C# ConfigurationManager 从 app.config 检索错误的连接字符串

    我有一个简单的 WinForms 应用程序 它最终将成为一个游戏 现在 我正在研究它的数据访问层 但遇到了障碍 我创建了一个单独的项目 名为DataAccess在其中 我创建了一个本地 mdfSQL Server 数据库文件 我还创建了一个
  • TestMethod:异步任务 TestSth() 不适用于 .NET 4.0

    我正在尝试使用 NET 4 0 BCL Async 和 MsTest 运行异步测试方法 看来这个设置不能处理 测试方法 异步Task测试Sth 由于测试用例资源管理器中缺少条目 将签名更改为异步后void 我可以运行测试用例 但结果错误 根
  • 未定义异常变量时通过引用捕获

    捕获异常时 标准指导是按值抛出 按引用捕获 据我了解 这有两个原因 如果由于内存不足异常而引发异常 我们将不会调用可能终止程序的复制构造函数 如果异常是继承层次结构的一部分 我们可能会对异常进行对象切片 如果我们有一个场景 我们没有在 ca
  • Windows 程序如何临时更改其时区?

    我写了一个函数来返回time t与给定日期的午夜相对应的值 当给定日期没有午夜时 它返回最早可用的时间 例如 当埃及进入夏令时时 这种情况就可能发生 今年 时间更改于 4 月 29 日晚上午夜生效 因此时钟直接从 23 59 转到 01 0
  • Type_traits *_v 变量模板实用程序顺序无法编译

    看过了这个答案 https stackoverflow com a 31763111 7151494 我试图想出一个变量模板从中获取代码的实用程序 template
  • 使用正则表达式匹配以“Id”结尾的单词?

    如何组合一个正则表达式来匹配以 Id 结尾的单词并进行区分大小写的匹配 试试这个正则表达式 w Id b w 允许前面的单词字符Id和 b确保Id位于单词末尾 b是字边界断言
  • C++ 析构函数:何时释放内存?

    如果我删除一个导致其析构函数被调用的对象 那么内存是在析构函数完成函数中的任何操作之前还是之后被释放 仅当最小派生类子对象被销毁后才会释放内存 所以如果你有 class Base class Derived public Base publ
  • 从 ef core 的子集合中删除一些项目

    我有一个父表和子表 其中父表与子表具有一对多关系 我想删除一些子项 并且希望父项的子集合反映该更改 如果我使用删除选定的子项RemoveRange 那么子集合不会更新 如果我使用Remove从子集合中删除子集合然后 显然 它不如使用效率高R
  • 基于 C++ 范围的 for 循环

    尝试使用基于范围的 for 循环执行某些操作 可以使用常规的 for 循环来完成 如下所示 vector
  • 如果数组为空,LINQ 返回 null

    public class Stuff public int x other stuff 我有一个IEnumerable
  • C 中的静态和动态绑定(严格来说是 C,而不是 C++)是什么?

    我最初对发布这个问题感到担忧 以免它重复 但即使在谷歌搜索了许多关键字之后 我在 StackOverflow 上找不到任何解释 C 的静态和动态绑定的链接 尽管有 C 的问题和答案 但是都涉及classes以及显然不适合 C 的东西 Sta
  • 如何设置 Swashbuckle 与 Microsoft.AspNetCore.Mvc.Versioning

    我们有asp net core webapi 我们添加了Microsoft AspNetCore Mvc Versioning and Swashbuckle拥有招摇的用户界面 我们将控制器指定为 ApiVersion 1 0 Route
  • XmlDocument Save 使文件保持打开状态

    我有一个简单的 C 函数 可以创建一个基本的 XML 文件并保存 private void CreateXMlFile string Filename string Name string Company XmlDocument doc n

随机推荐

  • 为什么 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