Tkinter 无法在 Manjaro 中正确显示 Unicode 字符
python 和 Tkinter 正确处理 Unicode 字符。
但它们无法正确显示 Unicode 编码的字符。
我在 Ubuntu 中使用 Python 3.1 和 Tkinter。我正在尝试使用泰米尔语 Unicode 字符。
所有处理均正确完成。但显示不对?
这是 Tkinter 中的错误显示
这是正确的显示(与 gedit 中一样)
仍未解决:
from tkinter import *
root = Tk()
root.geometry('200x200')
var = StringVar()
label = Label( root, textvariable=var, relief=RAISED )
Entry(text="Placeholder text").pack()
var.set("கற்றதனால் ஆய பயனென்கொல் வாலறிவன்\nநற்றாள்தொழாஅர் எனின். ")
label.pack()
root.mainloop()
python and Tkinter are processing Unicode characters correctly.
But they are not able to display Unicode encoded characters correctly.
I am using Python 3.1 and Tkinter in Ubuntu. I am trying to use Tamil Unicode characters.
All the processing is done correctly. But the display is wrong?
Here is the Wrong display as in Tkinter
Here is the Correct display (as in gedit)
Still not solved:
from tkinter import *
root = Tk()
root.geometry('200x200')
var = StringVar()
label = Label( root, textvariable=var, relief=RAISED )
Entry(text="Placeholder text").pack()
var.set("கற்றதனால் ஆய பயனென்கொல் வாலறிவன்\nநற்றாள்தொழாஅர் எனின். ")
label.pack()
root.mainloop()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我遇到过类似的问题,并发现我使用零宽度连接器 (U+200D) 来明确告诉渲染引擎连接两个字符。这在 2010 年曾经有效,但看起来渲染引擎发生了变化(我现在意识到了),现在在 2011 年,我发现使用 joiner 会产生问题! (它破坏了我的工作代码)我必须删除显式的零宽度连接器才能让我的代码再次工作。希望这有帮助。
I had faced similar problems and discovered I used the Zero Width Joiner (U+200D) to explicitly tell the rendering engine to join two characters. That used to work in 2010 but looks like there have been changes in the rendering engine (that I am now aware of) and now in 2011 I find that having the joiner creates the problem ! (It broke my working code) I had to remove the explicit zero width joiners to have my code work again. Hope this helps.
根据此评论,
< /a>
As per this comment,
看起来 Tk 处理不当,例如“零级组合标记”,请参阅:
http://www.unicode.org/versions/Unicode6.0.0/ch04 .pdf#G124820(表 4-4)
我假设未正确显示的序列之一是代码点:0BA9
0BC6(泰米尔语音节 NNNE),其中 0BC6 是根据 Unicode 标准的重新排序类零组合标记,这基本上意味着字形被交换。
修复它的唯一方法是在 Tk 错误跟踪器上提交错误并希望它得到修复。
It looks like Tk is mishandling things like 'Class Zero Combining Marks', see:
http://www.unicode.org/versions/Unicode6.0.0/ch04.pdf#G124820 (Table 4-4)
I assume one of the sequences that do not show correctly are the codepoints: 0BA9
0BC6 (TAMIL SYLLABLE NNNE), where 0BC6 is a reordrant class zero combining mark according to the Unicode standard, which basically means the glyphs get swapped.
The only way to fix it is to file a bug at the Tk bug tracker and hope it gets fixed.