我有一个将配置文件返回到低级硬件设备的网络服务。这个设备的制造商告诉我他只支持这个配置文件的单字节字符集。
在这个 wiki 页面上,我发现以下应该是单字节字符集:
- ISO 8859
- ISO/IEC 646(我在这里找不到这个)
- 各种 Microsoft/IBM 代码页
但是当我在这些字符集上调用 Encoding.GetMaxByteCount(1) 时,它总是返回 2。
我还尝试了各种其他编码(例如 IBM437),但 GetMaxByteCount 也为其他字符集返回 2。
根据这个,方法 Endoding.IsSingleByte 似乎不可靠
您应该小心您的应用程序对 IsSingleByte 的值所做的事情。关于编码将如何进行的假设可能仍然是错误的。例如,Windows-1252 的 Encoding.IsSingleByte 值为 true,但 Encoding.GetMaxByteCount(1) 返回 2。这是因为该方法考虑了先前解码器操作的潜在剩余代理。
根据这个,方法 Encoding.GetMaxByteCount 也有一些相同的问题
请注意,GetMaxByteCount 考虑了先前解码器操作的潜在剩余代理。由于解码器的原因,将值 1 传递给该方法会检索 2 用于单字节编码,例如 ASCII。如果需要此信息,您的应用程序应使用 IsSingleByte 属性。
因此,我不确定要使用什么。