【发布时间】:2016-02-25 22:38:48
【问题描述】:
我正在尝试使用 python 库 pyautogui 自动在 Telegram 中输出表情符号,但我发现仅使用 typewrite 是不可能的。我搜索图书馆来帮助我解决我的问题,我找到了pyemojify 和emoji,但在这两种情况下我都遇到了
UnicodeEncodeError: 'charmap' codec can't encode characters: character maps to <undefined>
代码是:
from pyemojify import emojify
print(emojify("Life is short :smile: , use :sparkles: Python :sparkles:"))
还有这个:
import emoji
print(emoji.emojize('Python is :thumbs_up_sign:'))
我在这里搜索了很多,但没有一个答案最终对我有用。
现在我有两个问题:有没有办法使用 python pyautogui 甚至使用 java Robot 类在 Telegram 中输出表情符号?第二个问题是我应该如何在我的代码中修复UnicodeEncodeError?在此先感谢:)
【问题讨论】:
-
完整的回溯将有助于找出错误的确切来源。
-
如果它来自
print,则意味着您的stdout未设置为支持完整的Unicode 字符集。尝试打印sys.stdout.encoding。 -
它输出
windows-1252我应该如何操作stdout来支持完整的Unicode 字符集?我在我的 x64 windows 8.1 机器上运行 python 3.4。我已经看过here,但它根本不起作用。 @MarkRansom -
所以我将我的 IDE 设置 (Pycharm) 中的所有编码选项更改为 UTF-8,然后
print(emoji.emojize('Python is :thumbs_up_sign:'))的输出是Python is �并且我仍然面临print(emojify("Life is short :smile: , use :sparkles: Python :sparkles:"))错误的错误因为这是UnicodeEncodeError: 'utf-8' codec can't encode character '\ud83d' in position 14: surrogates not allowed打印通常像print("\uD83D\uDE0D")也给我完全相同的错误。 -
目前不知道如何为您提供帮助,我不熟悉 Pycharm 或您正在使用的库。但至少有足够的信息让其他人弄清楚 - 你应该编辑问题。我会说
emojify生成代理而不是单个代码点听起来像是一个错误。