c# – 如何使用单字节字符编码?
我有一个web服务,它将配置文件返回给低级硬件设备.
该设备的制造商告诉我他只支持此配置文件的单字节字符集. 在this wiki page我发现以下应该是单字节字符集: > ISO 8859 但是当我在这些字符集上调用Encoding.GetMaxByteCount(1)时,它总是返回2. 我还尝试了其他各种编码(例如IBM437),但GetMaxByteCount也为其他字符集返回2. 方法Endoding.IsSingleByte似乎不可靠according to this
此外,方法Encoding.GetMaxByteCount也有一些相同的问题according to this
因此,我不知道如何使用. Further reading. 解决方法
基本上,GetMaxByteCount会考虑在常规代码中可能永远不需要的边缘情况,特别是它对解码器和代理的说法.这里的要点是一些代码点被编码为代理对,这在不幸的情况下可能意味着它跨越两个对GetBytes()/ GetChars(在编码器/解码器上)的调用.因此,理论上,实现可能仍然缓冲单个字节/字符并等待处理,因此GetMaxByteCount需要警告这一点.
然而!所有这一切只有在您直接使用编码器/解码器时才有意义.如果您正在使用Encoding上的操作,例如Encoding.GetBytes,那么所有这些都是从您身上抽象出来的,您将永远不需要知道.在这种情况下,只需使用IsSingleByte,你会没事的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |