在Tkinter应用程序栈中的哪个位置是问号("?")代替Unicode键盘输入到文本小部件中?
可能的位置: Python、Tkinter、TCL/TK、Windows、Windows键盘
我在这里有一个类似的问题:When I type non-ASCII characters using a Windows keyboard I get "?"
但是这个问题的意思是“这个问题在哪里发生(在应用程序栈中)?”所以,也许它可以说明类似我之前提交的类似的问题。
我的环境是:
发布于 2013-05-22 09:23:41
问题是,在某个时候,使用不支持特定字符的编码将unicode符号转换为特定的字节序列(这会导致您得到“替换字符”,它恰好是这个特定转换的? )。
Tk的核心是Unicode感知的,至少脚本的初始阶段将使用UTF-8;字符是(好的,几乎可以肯定的)正确地从键盘和Windows中通过。然后发生的是字符被传递到Python层;我不太了解Tkinter的这一部分,但我怀疑问题在哪里(例如,如果生成了错误的字符串类型)。换句话说,它闻起来可能是一种微妙的Tkinter虫。(相比之下,Tcl对字符串的内部概念完全是Unicode感知的,我在我的代码中非常依赖它,并且已经做了很多年了。这肯定有一些权衡,我知道Python在这些权衡中的选择是不同的。)
您可以通过查看所得到的字符串的确切类型来进一步检查。它应该是一个Unicode字符串,否则您将永远遇到此类问题(一些平台和部署必须本机处理256个以上的字符)。
https://stackoverflow.com/questions/16641361
复制相似问题