在Python的控制台中显示表情符号

13

我想知道在Windows上是否可以在Python 3控制台中打印表情符号。实际上,为了避免以下错误:

codec can't encode character '\U0001f44d' in position 10: character maps to  
<undefined>

我曾使用过:

import emoji as moji
print(moji.emojize('Python is :thumbsup:', use_aliases=True).encode('unicode-
escape'))

正如预期的,它打印了正确的字符:U0001f44d,没有任何exception


你指的是哪个操作系统,哪个Python控制台?是指Windows控制台窗口还是其他什么? - Antti Haapala -- Слава Україні
1
否则答案是是的,如果你在Linux和Python 3.5.2和Konsole等上运行此命令:>>> print('\U0001f44d') - Antti Haapala -- Слава Україні
@AnttiHaapala:是的,我使用Windows作为操作系统。这是主要原因吗?如果是,为什么Windows在这里似乎成为了一个障碍? - dark.vador
2个回答

14

Windows命令提示符在Unicode字符方面有许多限制,尤其是那些超出基本多语言平面(BMP或U+0000至U+FFFF)的字符。命令提示符默认使用遗留OEM编码(在美国Windows上为cp437),对于局部编码以外的字符具有有限的字体支持。找到一个对UTF-8有良好支持的Python IDE。

查看各种Unicode字符的一种快速而简单的方法是将其写入文件并利用浏览器:

import os
with open('test.htm','w',encoding='utf-8-sig') as f:
    f.write('\U0001f44d')
os.startfile('test.htm')

这在我的 Windows 10 系统上最新版的 Chrome 浏览器中显示为 赞


感谢您的解释。 - dark.vador
使用utf-8-sig是个好主意。我花了相当长的时间在谷歌上找到相关信息。 - Anas Elghafari
是的,如果一个文件有UTF-8编码的BOM(字节顺序标记),大多数浏览器将使用UTF-8解码该文件以进行显示。这就是utf-8-sig确保写入文件的内容。 - Mark Tolonen

7

首先安装表情模块 --- pip install emoji



import emoji
print(emoji.emojize('Python is :thumbs_up:'))

这段代码可以在Anaconda Jupyter环境下运行...

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接