如何从unicode字符中获取原始字节?

2024-04-26 03:21:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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

对于上面的unicode字符(我假设0x62应该在它的低位。如果我错了,请纠正我),我想得到它的原始字节列表(ASCII 0x62对应于b)。有人能告诉我如何在python2和pytho3中都做到这一点吗(如果代码不同的话)?谢谢。你知道吗

['b', 'a']

Tags: 代码列表字节asciiunicode字符python2pytho3
1条回答
网友
1楼 · 发布于 2024-04-26 03:21:09

使用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')。你知道吗

这段代码在python2和python3上都可以工作,但是请注意python3上的字节字符串的行为不同。你知道吗

有关编码差异的更多有用信息: https://unicodebook.readthedocs.io/unicode_encodings.html

相关问题 更多 >