2024-04-26 03:21:09 发布
网友
>>> u'\u6162' u'\u6162'
对于上面的unicode字符(我假设0x62应该在它的低位。如果我错了,请纠正我),我想得到它的原始字节列表(ASCII 0x62对应于b)。有人能告诉我如何在python2和pytho3中都做到这一点吗(如果代码不同的话)?谢谢。你知道吗
0x62
b
['b', 'a']
使用UTF-32会更安全,因为它用相同的字节数覆盖整个BMP平面。这样就可以得到2个额外的\x00字节,这些字节很容易被删除。你知道吗
\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')。你知道吗
le
ab
be
'utf-16be'
这段代码在python2和python3上都可以工作,但是请注意python3上的字节字符串的行为不同。你知道吗
有关编码差异的更多有用信息: https://unicodebook.readthedocs.io/unicode_encodings.html
使用UTF-32会更安全,因为它用相同的字节数覆盖整个BMP平面。这样就可以得到2个额外的
\x00
字节,这些字节很容易被删除。你知道吗如果您知道在UTF-16上不会有超过2字节的奇怪字符,那么您也可以使用它:
注意,我使用的是
le
编码器变体,不添加BOM,而是具有所需的字节顺序。如果您更愿意使用ab
,请使用be
变体(例如'utf-16be'
)。你知道吗这段代码在python2和python3上都可以工作,但是请注意python3上的字节字符串的行为不同。你知道吗
有关编码差异的更多有用信息: https://unicodebook.readthedocs.io/unicode_encodings.html
相关问题 更多 >
编程相关推荐