2016-11-06 89 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上不起作用。 –