将两个UTF-8字节彼此拆分的有效方法

时间:2015-11-22 01:45:24

标签: python character-encoding

我有两个UTF-8字节\xf0\x9f\x93\xb1\xf0\x9f\x9a\xac,我希望将其拆分为\xf0\x9f\x93\xb1\xf0\x9f\x9a\xac这是最有效的方法

我现在正在做的是分成\xf0

问题

如果我按照bigOTHER的建议再次对其进行解码和编码,我会得到错误的字节返回

>>> s ='\xf0\x9f\x93\xb1\xf0\x9f\x9a\xac'
>>> u = s.decode("utf-8")
>>> u
u'\U0001f4f1\U0001f6ac'
>>> u[0].encode("utf-8")
'\xed\xa0\xbd'
>>> u[1].encode("utf-8")
'\xed\xb3\xb1'
>>> u[0]
u'\ud83d'
>>> u[1]
u'\udcf1'

解决:

这是因为我的python是用UCS2而不是UCS4编译的,而前者是默认的。有关详细信息,请查看此Question

2 个答案:

答案 0 :(得分:3)

使用decode-encode执行此操作:

>>> u = s.decode("utf-8")
>>> u
u'\U0001f4f1\U0001f6ac '
>>> u[0].encode("utf-8")
'\xf0\x9f\x93\xb1'
>>> u[1].encode("utf-8")
'\xf0\x9f\x9a\xac'

答案 1 :(得分:0)

使用解码方法。它将其分成字节本身。因此,您可以在调用解码后直接访问。