解码Unicode字符> U + 1f900无法打印时无法正常工作

时间:2018-04-04 16:08:51

标签: python python-3.x unicode

当我尝试解码这样的unicode字符时:

>>> x = '\\U0000263a'
>>> x.encode().decode('unicode-escape')
'☺'

有效!但它的失败大于U + 1f900。

>>> x = '\\U0001f941'
>>> x.encode().decode('unicode-escape')
'\U0001f941'

>>> x = '\\U0001f900'
>>> x.encode().decode('unicode-escape')
'\U0001f900'

但是当打印它时,它可以工作!

>>> x = '\\U0001f901'
>>> print(x.encode().decode('unicode-escape'))

任何人都可以向我解释发生了什么事吗? 我使用的是python 3.5.2

1 个答案:

答案 0 :(得分:2)

您似乎正在尝试将表情符号可视化。预计在Python中输出。

请与Emojis一起查看官方Unicode mappings

U + 1F901 U + 1F900 没有分配表情符号映射

在Python 3.6.5中

u'\U0001F941'
''

如果您想要精美打印,我发现emoji库具有巨大的映射和视觉效果良好的显示效果 请注意我没有使用编码和解码

import emoji
emoji.emojize(':drum:')
''

但是U + 1F901是Circled Cross Formee With Two Dots 和U + 1F900是 Circled Cross Formee with Four Dots ,在Unicode.org页面上没有标准的显示映射。