ASCII编码和错误检测

Jiale Xue - MSFT 34,356 信誉分 Microsoft 供应商
2024-04-17T08:02:06.1+00:00

.Net 库中 ASCIIEncoding 的文档指出:

ASCIIEncoding 不提供错误检测。出于安全原因,应使用 UTF8Encoding、UnicodeCoding 或 UTF32Encoding 并启用错误检测。

在我的应用程序中,我不想使用 Unicode 编码,因为我需要逐字节处理字符并且仅转换 ASCII 兼容字符。例如,我需要将0xC2A9视为0xC2和0xA9,而不是版权符号。我想将 ASCIIEncoding 与 EncoderFallback 属性一起使用,但上面的注释让我担心。“not provide error detection” 到底是什么意思?我认为这与缓冲区溢出有关。有没有办法手动添加所需的错误检测,或者我应该咬紧牙关编写自己的 Encoder 类?TIA。

Note:此问题总结整理于: ASCIIEncoding and Error Detection

.NET 运行时
.NET 运行时
.NET: 基于 .NET 软件框架的 Microsoft 技术。运行时: 运行未编译为机器语言的应用所需的环境。
38 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Hui Liu-MSFT 40,786 信誉分 Microsoft 供应商
    2024-04-17T08:37:54.3266667+00:00

    在UTF8Encoding类文档中: 138371-1.png

    启用错误检测后,检测无效字符或字节序列的方法将引发 ArgumentException 异常。如果没有错误检测,则不会抛出异常,并且通常会忽略无效序列。

    因此,如果要使用 ASCIIEncoding 类,则需要在出现无效的字符或字节序列时手动引发 ArgumentException 异常。


    • 如果答案有帮助,请点击“接受答案”并点赞。 注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。
    1 个人认为此答案很有帮助。
    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助