我目前正在用python3编写一个加密/解密程序,它可以很好地处理字符串;但是,我在将它转换为使用字节字符串时遇到了一些问题,因为在UTF-8中,字符可以用1到4个字节的任何地方表示。在
>>>'\u0123'.encode('utf-8')
b'\xc4\xa3'
>>>'\uffff'.encode('utf-8')
b'\xef\xbf\xbf'
经过一番研究,我发现在python3中目前没有一种编码方式,它对每个字节都有固定的长度,并且所有字符都是UTF-8格式的——有没有什么模块/函数可以用来解决这个问题(比如附加空字节,以便每个charter都能对长度为4的字节串进行编码)?在
UTF-8是一种编码,它总是使用可变的字节数;字节数取决于输入文本的unicode码位。在
如果您需要能够处理Unicode的固定长度编码,请使用UTF-32(UTF-16仍然使用每个码位2或4个字节)。在
请注意,UTF-16和UTF-32编码都包含一个Byte Order Mark代码单元;一个初始的U+FEFF ZERO WIDTH NO-BREAK SPACE码位,它让解码器知道字节是以小端还是大端顺序产生的。对于UTF-32,这个代码点始终是4个字节,因此输出的长度将是4+(4*个字符计数)。在
通过将
-le
或-be
添加到编解码器中,可以按照特定的字节顺序进行编码,在这种情况下,BOM被省略:相关问题 更多 >
编程相关推荐