tkinter无法正确显示unicode字符

时间:2011-03-02 10:58:11

标签: python unicode tkinter tamil

python和tkinter正在正确处理unicode字符。

但是他们无法正确显示unicode编码字符。

我在Ubuntu中使用Python 3.1和tkinter。我正在尝试使用泰米尔语unicode字符。

所有处理都正确完成。但是显示错了?

这是错误的显示,如在tkinter中

wrong https://docs.google.com/leaf?id=0B7YA7kky_NEoM2U3MzI5NGUtNTk2NC00MzYzLTk1N2YtMTJjYTA0Yjc0MmE1&hl=en_GB&authkey=CKORhugK

这是正确的显示(如在gedit中)

correct https://docs.google.com/leaf?id=0B7YA7kky_NEoNDBmMzYzOWEtMjY5Ny00NWM5LWE0MWYtMTg1ZDVhOGQ2MmEz&hl=en_GB&authkey=CPWhi74J

有人可以帮忙吗?

5 个答案:

答案 0 :(得分:2)

没有代码就很难诊断程序。看看你是否可以将代码简化为显示问题的简短内容,然后发布。

我不熟悉泰米尔语字形,而且它们很小,但是看截图,看起来所有的字形都在那里,但某些字形会被交换,我是对的吗?

(嗯,我想这应该是一个“评论”,而不是“答案”。仍然在这个网站上找到我的方式。)

答案 1 :(得分:1)

我遇到过类似的问题,发现我使用Zero Width Joiner(U + 200D)明确告诉渲染引擎加入两个字符。这曾经在2010年工作,但看起来渲染引擎(我现在已经知道)已经发生了变化,现在在2011年,我发现让木匠创造了问题! (它打破了我的工作代码)我不得不删除显式的零宽度连接器,让我的代码再次工作。希望这会有所帮助。

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

由于我不知道如何评论别人的评论和答案,我在这里打字。

@Bryan Oakley我不认为字体是这里的问题,但它的渲染是。例如,当我输入两个unicode字符u0BAE和u0BC6时,它应该组合成一个显示“மெ”的泰米尔语字符。但我认为tkinter中不存在渲染引擎来显示某些unicode语言。

@ Vamana是的,印度语有一个'组合单字符符号',如上所述,它需要两个unicode字符。当我输入charA,然后charB时,显示应该呈现为单个字符,比如charBA。但它显示charAB(这是错误的)。

@schlenk是的,你是对的。我最初使用IDLE,然后尝试在linux控制台中运行python,两者都错误地呈现Tamil文本进行显示。因此我来到了tkinter。现在,这也是徒劳的。 我目前正在使用文件IO。现在我想我应该学习如何使用python创建一个简单的网页进行输入和输出,以便浏览器正确呈现。

答案 4 :(得分:0)

根据this comment

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

enter image description here