【问题标题】:Outputting emoji in python在python中输出表情符号
【发布时间】:2016-02-25 22:38:48
【问题描述】:

我正在尝试使用 python 库 pyautogui 自动在 Telegram 中输出表情符号,但我发现仅使用 typewrite 是不可能的。我搜索图书馆来帮助我解决我的问题,我找到了pyemojifyemoji,但在这两种情况下我都遇到了

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 生成代理而不是单个代码点听起来像是一个错误。

标签: python pyautogui


【解决方案1】:
from selenium import webdriver

b = webdriver.Firefox()
b.get('https://web.telegram.org')
....
....
b.find_elements_by_class_name('composer_rich_textarea')[0].send_keys('\U0001F422')
print('\U0001F422'.encode('utf-8'))

【讨论】:

  • 不幸的是,这不起作用:send_keys 和打印命令都写“\U0001F422”。
猜你喜欢
  • 2022-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-25
  • 2020-10-22
  • 1970-01-01
  • 2019-03-06
相关资源
最近更新 更多