UTF-8字符串可以包含零个字节吗?我打算通过ascii明文协议发送它,我应该用base64之类的东西来编码它吗?
发布于 2011-08-02 12:41:17
ASCII文本限制为0到127之间的字节值。UTF-8文本没有这样的限制-用UTF-8编码的文本可以设置其高位。因此,通过不能保证高位安全通过的通道发送UTF-8文本是不安全的。
如果您被迫处理一个仅支持ASCII的通道,Base-64是一个合理的选择(虽然不是特别节省空间)。你确定你被限制为7位数据吗?这在今天有点不寻常。
发布于 2011-08-02 12:42:11
UTF-8编码的字符串可以在后备存储器的给定字节位置具有从0x00到0xff的大多数值(尽管不允许一些特定的组合,请参见http://en.wikipedia.org/wiki/UTF-8和八位位组的值C0、C1、F5到FF从不出现)。
如果要通过不支持二进制数据的通道传输ASCII流,则必须进行适当的编码。Base64得到了广泛的支持,并且肯定会解决这个问题,尽管它并不是完全有效,因为它使用64个字符空间来编码数据,而ASCII允许128个字符空间。
有一个sourceforge项目提供了基数91编码,它在避免不可打印字符http://base91.sourceforge.net/的同时更节省空间
https://stackoverflow.com/questions/6907297
复制相似问题