.NET 运行时
.NET: 基于 .NET 软件框架的 Microsoft 技术。运行时: 运行未编译为机器语言的应用所需的环境。
50 个问题
.Net 库中 ASCIIEncoding 的文档指出:
ASCIIEncoding 不提供错误检测。出于安全原因,应使用 UTF8Encoding、UnicodeCoding 或 UTF32Encoding 并启用错误检测。
在我的应用程序中,我不想使用 Unicode 编码,因为我需要逐字节处理字符并且仅转换 ASCII 兼容字符。例如,我需要将0xC2A9视为0xC2和0xA9,而不是版权符号。我想将 ASCIIEncoding 与 EncoderFallback 属性一起使用,但上面的注释让我担心。“not provide error detection” 到底是什么意思?我认为这与缓冲区溢出有关。有没有办法手动添加所需的错误检测,或者我应该咬紧牙关编写自己的 Encoder 类?TIA。
Note:此问题总结整理于: ASCIIEncoding and Error Detection
启用错误检测后,检测无效字符或字节序列的方法将引发 ArgumentException 异常。如果没有错误检测,则不会抛出异常,并且通常会忽略无效序列。
因此,如果要使用 ASCIIEncoding 类,则需要在出现无效的字符或字节序列时手动引发 ArgumentException 异常。