c# - 为什么在反序列化期间使用 UTF-8 进行编码比使用 ASCII 更好?

标签 c# encoding deserialization

我想将代表 RESTful Web 服务响应的 JSON 文件反序列化为相应的类。我正在使用
System.Text.ASCIIEncoding.ASCII.GetBytes(ResponseString)我在 Microsoft Docs 上阅读出于安全原因,使用 UTF-8 编码而不是 ASCII 更好。

现在我有点困惑,因为我不知道这两者之间的真正区别( 关于安全事项 )。谁能告诉我使用 UTF-8 而非 ASCII 进行反序列化的真正实际优势是什么?

最佳答案

最终,编码器的目的是取回您想要获得的数据。 ASCII 只定义了一个很小的 ​​7 位值范围;没有处理的任何事情,你可能会拿回垃圾 - 或 ? ,来自有效载荷,包括 e̵v̷e̴n̸ ̷r̵e̸m̵o̸t̸e̵l̶y̸ ̶i̴n̴t̵e̵r̷e̵s̶t̶i̷n̷g̵ ̶t̸e̵x̵t̵t̵。

现在;当您的应用程序获取无法处理的数据时会发生什么?我们不知道,当您获得无法处理的有效负载时,它确实很可能会导致安全问题。

如果您无法正确存储和显示客户的姓名等(或由于从右到左的标记而向后打印他们的姓名),那么坦率地说,在这个互联的世界中,这也很尴尬。世界上大多数人每天都在使用 ASCII 以外的东西。

由于 UTF-8 是 ASCII 的超集,而 UTF-8 基本上赢得了编码 war :您不妨直接使用 UTF-8。

关于c# - 为什么在反序列化期间使用 UTF-8 进行编码比使用 ASCII 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60543119/

相关文章:

c# - 公共(public)静态变量 c# 使用正确吗?

java - 简单框架的映射 Mime 类型属性

java - 仅反序列化 Java 中必需的字段

c# - 查找与谓词匹配的所有 ASP.NET 控件?

c# - 创建辅助 x 轴

c# - 在 C# 中的节点内搜索的 XmlNode.SelectSingleNode 语法

powershell - 从 Powershell 使用 native CMD 命令时的编码问题

javascript - 序列化表单时的编码

java - 使用 matches() 的 Base64 比较返回 false

java - 在没有 Jackson 的情况下将 Retrofit2 响应反序列化为 JSON