【问题标题】:Display Emoji in Python's console在 Python 的控制台中显示 Emoji
【发布时间】:2023-03-18 01:05:01
【问题描述】:

我想知道是否可以在 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'))

也就是说,正如预期的那样,打印正确的character:U0001f44d,没有任何exception

【问题讨论】:

  • 哪个操作系统,哪个Python控制台,你的意思是Windows控制台窗口还是什么?
  • 因为否则答案是&gt;&gt;&gt; print('\U0001f44d') -> ???? 如果你碰巧在 Linux 和 Python 3.5.2 和 Konsole 等上运行它。
  • @AnttiHaapala:是的,我使用Windows 作为OS。这是主要原因吗?如果yes,为什么Windows 会在这里成为障碍?

标签: python console char codec emoji


【解决方案1】:

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 浏览器中显示

【讨论】:

  • 感谢您的解释。
  • 使用 utf-8-sig 的好主意。不得不谷歌了很长一段时间才能找到一些相关信息
  • 是的,如果文件具有 UTF-8 编码的 BOM(字节顺序标记),大多数浏览器将使用 UTF-8 解码文件以进行显示。这就是utf-8-sig 确保写入文件的内容。
【解决方案2】:

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

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

此代码在 Anaconda Jupyter 环境中运行...

【讨论】:

    最近更新 更多