2

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()

曼扎罗: 在此处输入图像描述

视窗: 在此处输入图像描述

4

3 回答 3

0

我遇到过类似的问题,发现我使用了零宽度连接器 (U+200D) 来明确告诉渲染引擎连接两个字符。这曾经在 2010 年工作,但看起来渲染引擎发生了变化(我现在知道了),现在在 2011 年,我发现有加入者会产生问题!(它破坏了我的工作代码)我必须删除显式的零宽度连接器才能让我的代码再次工作。希望这可以帮助。

于 2011-10-09T05:23:07.847 回答
0

根据这个评论

from PyQt5.QtWidgets import QApplication,QMainWindow,QLabel
import sys
app=QApplication(sys.argv)
app.setStyle('Fusion')
app.setApplicationName('PyQt5 App')
win=QMainWindow()
label=QLabel()
text='கற்றதனால் ஆய பயனென்கொல் வாலறிவன்\nநற்றாள் தொழாஅர் எனின்.'
label.setText(text)
win.setCentralWidget(label)
win.show()
sys.exit(app.exec_())

在此处输入图像描述

于 2021-06-11T15:42:35.587 回答
-1

看起来 Tk 对“零级组合标记”之类的处理不当,请参阅: http ://www.unicode.org/versions/Unicode6.0.0/ch04.pdf#G124820 (表 4-4)

我假设未正确显示的序列之一是代码点:0BA9 0BC6 (TAMIL SYLLABLE NNNE),其中 0BC6 是根据 Unicode 标准的重排零类组合标记,这基本上意味着字形被交换。

修复它的唯一方法是在 Tk 错误跟踪器上提交错误并希望它得到修复。

于 2011-03-02T20:35:30.173 回答