如何从Unicode字符获取原始字节?

时间:2019-10-02 17:02:38

标签: python unicode

>>> u'\u6162'
u'\u6162'

对于上述unicode字符(我认为0x62应该在其低位。如果我错了,请纠正我),我想获取其原始字节的列表(ASCII 0x62对应于b)。有人可以告诉我如何在python2和3中做到这一点(如果代码不同)?谢谢。

['b', 'a']

1 个答案:

答案 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