2016-11-06 291 views
2

我想知道是否可以在Windows上的Python 3控制台中打印Emojis。其实,要避免以下错误:在Python的控制台中显示表情符号

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')) 

是,预期,打印权character:U0001f44d没有任何exception

+0

*您的操作系统,哪个* Python *控制台,您的意思是* Windows *控制台窗口什么的? –

+0

因为否则答案是**是**,>>> print('\ U0001f44d')' - >''如果你碰巧在Linux和Python 3.5.2和Konsole等上运行这个。 –

+0

@AnttiHaapala:是的,我使用'Windows'作为'OS'。这是主要原因吗?如果'是',为什么'Windows'在这里出现障碍? –

回答

2

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') 

这显示在最新的Chrome浏览器thumbs up我的Windows 10系统上。

+0

感谢您的解释。 –

+0

使用utf-8-sig的好主意。必须谷歌了很长一段时间才能找到一些信息 –

-2

"Emoji For Python"

安装:pip install emoji --upgrade

例子:

>> import emoji 
    >> print(emoji.emojize('Python is :thumbs_up_sign:')) 
    Python is 
    >> print(emoji.emojize('Python is :thumbsup:', use_aliases=True)) 
    Python is 

你可以在这些链接任何表情图案的Unicode:

  1. Emoji cheat sheet
  2. Full emoji list

More information here.

+1

这就是OP正在做的事情。上面的代码虽然在Windows上不起作用。 –