解码 U+1f900 > 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

您似乎正在尝试可视化表情符号。输出应该在 Python 中。

请使用表情符号查看官方 Unicode 映射

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

在 Python 3.6.5 中

u'U0001F941'
'  '

如果你想要花哨的印刷,我发现emoji图书馆有巨大的映射和视觉效果良好的显示 请注意我没有使用编码和解码

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

但是,U+1F901 是带有两个点的圆圈交叉形式,而 U+1F900 是带有四个点的圆形交叉形式,Unicode.org 页面上没有标准的显示映射。

最新更新