将表情符号字符显示到 IDLE/Terminal 的方法? UnicodeEncodeError - Tk 不支持非 BMP 字符
Method to display emoji chars to IDLE/Terminal? UnicodeEncodeError - Non-BMP character not supported in Tk
我正在尝试打印此示例代码
print ("Hello \U0001F914")
现在,如果我 运行 在 MacOS 终端上使用此代码,它会打印思考表情符号,如果我 运行 在 linux 终端上使用此代码,它会打印与替代表情符号相同。当我在 IDLE 上尝试 运行 时,我 运行 进入了这个错误:
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
print ("Hello \U0001F914")
UnicodeEncodeError: 'UCS-2' codec can't encode characters in position 6-6: Non-BMP character not supported in Tk
有没有办法让它在可以处理表情符号的解释器和不能显示表情符号的解释器上打印,只需将其替换为某些东西或根本不显示它而不会崩溃?
我现在的想法是使用 OS 库并可能获取有关用户的信息 运行ning 然后相应地更改执行的编码。
如果有人能提出解决方案,我们将不胜感激!
谢谢
这通常是不可能的 - 并且需要非常非凡的壮举才能真正可行。
事实很简单,支持tkinter的技术栈TCL不做BMP以外的Unicode,即odepoint大于0xffff的任何字符。
唯一的解决方法是重写所有 TCL 部分以支持它,或者添加一层代码来拦截传递给某些文本处理方法的所有字符串,并将这些字符替换为预渲染的内联图像(并将其正确放入文本流中需要一些工作——我什至不确定是否可以在 tknter 中使用内联图像)。
因此,如果您需要在使用 Python 创建的 GUI 中使用这些字符,可以使用 Qt 或 GTK 作为 GUI;
我正在尝试打印此示例代码
print ("Hello \U0001F914")
现在,如果我 运行 在 MacOS 终端上使用此代码,它会打印思考表情符号,如果我 运行 在 linux 终端上使用此代码,它会打印与替代表情符号相同。当我在 IDLE 上尝试 运行 时,我 运行 进入了这个错误:
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
print ("Hello \U0001F914")
UnicodeEncodeError: 'UCS-2' codec can't encode characters in position 6-6: Non-BMP character not supported in Tk
有没有办法让它在可以处理表情符号的解释器和不能显示表情符号的解释器上打印,只需将其替换为某些东西或根本不显示它而不会崩溃?
我现在的想法是使用 OS 库并可能获取有关用户的信息 运行ning 然后相应地更改执行的编码。
如果有人能提出解决方案,我们将不胜感激! 谢谢
这通常是不可能的 - 并且需要非常非凡的壮举才能真正可行。
事实很简单,支持tkinter的技术栈TCL不做BMP以外的Unicode,即odepoint大于0xffff的任何字符。
唯一的解决方法是重写所有 TCL 部分以支持它,或者添加一层代码来拦截传递给某些文本处理方法的所有字符串,并将这些字符替换为预渲染的内联图像(并将其正确放入文本流中需要一些工作——我什至不确定是否可以在 tknter 中使用内联图像)。
因此,如果您需要在使用 Python 创建的 GUI 中使用这些字符,可以使用 Qt 或 GTK 作为 GUI;