2

pythonとTkinterはUnicode文字を正しく処理しています。

ただし、Unicodeでエンコードされた文字を正しく表示することはできません。

私はUbuntuでPython3.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()

Manjaro: ここに画像の説明を入力してください

ウィンドウズ: ここに画像の説明を入力してください

4

3 に答える 3

0

私は似たような問題に直面したことがあり、Zero Width Joiner (U+200D) を使用してレンダリング エンジンに 2 つのキャラクターを結合するように明示的に指示していることに気付きました。それは2010年に機能していましたが、レンダリングエンジンに変更があったように見えます(私は今気づいています).2011年には、ジョイナーを使用すると問題が発生することがわかりました! (作業コードが壊れました)コードを再び機能させるには、明示的なゼロ幅ジョイナーを削除する必要がありました。お役に立てれば。

于 2011-10-09T05:23:07.847 に答える
-1

Tkが「クラスゼロ結合マーク」のようなものを誤って処理しているようです。http: //www.unicode.org/versions/Unicode6.0.0/ch04.pdf#G124820(表4-4)を参照してください。

正しく表示されないシーケンスの1つは、コードポイント0BA9 0BC6(TAMIL SYLLABLE NNNE)であると想定します。ここで、0BC6は、Unicode標準に準拠した、従属クラス0の結合マークです。これは、基本的にグリフが交換されることを意味します。

これを修正する唯一の方法は、Tkバグトラッカーにバグを報告し、修正されることを期待することです。

于 2011-03-02T20:35:30.173 に答える