>>> u'\u6162'
u'\u6162'
对于上述unicode字符(我认为0x62
应该在其低位。如果我错了,请纠正我),我想获取其原始字节的列表(ASCII 0x62
对应于b
)。有人可以告诉我如何在python2和3中做到这一点(如果代码不同)?谢谢。
['b', 'a']
答案 0 :(得分:0)
使用UTF-32将更安全,因为它以相同的字节数覆盖了整个BMP平面。这样一来,您将额外获得2个容易删除的\x00
字节。
>>> u'\u6162'.encode('utf-32le')
b'ba\x00\x00'
如果您知道不会在UTF-16上使用超过2个字节的奇怪字符,也可以使用它:
>>> u'\u6162'.encode('utf-16le')
b'ba'
请注意,我使用的是le
编码器变体,不添加BOM并具有所需的字节顺序。如果您更愿意使用ab
,请使用be
变体(例如'utf-16be'
)。
该代码在Python 2和3上均可工作,但请注意Python 3上的字节字符串的行为有所不同。
有关编码差异的更多有用信息: https://unicodebook.readthedocs.io/unicode_encodings.html