Tkinter 无法在 Manjaro 中正确显示 Unicode 字符

发布于 2024-10-20 01:47:41 字数 953 浏览 8 评论 0原文

python 和 Tkinter 正确处理 Unicode 字符。

但它们无法正确显示 Unicode 编码的字符。

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

所有处理均正确完成。但显示不对?

这是 Tkinter 中的错误显示

wrong

这是正确的显示(与 gedit 中一样)

 Correct


仍未解决:

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

Manjaro: 输入图片此处描述

Windows: 输入图片此处描述

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

wrong

Here is the Correct display (as in gedit)

correct


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

Manjaro:
enter image description here

Windows:
enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

傾城如夢未必闌珊 2024-10-27 01:47:41

我遇到过类似的问题,并发现我使用零宽度连接器 (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.

青衫儰鉨ミ守葔 2024-10-27 01:47:41

根据此评论

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

在此处输入图像描述< /a>

As per 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

木森分化 2024-10-27 01:47:41

看起来 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文