首页 > 解决方案 > 使用 Python 和 Tkinter 显示国际字符

问题描述

使用 Python v3 和 Tkinter,我试图读取包含国际字符的文本文件,然后将它们显示在屏幕上(例如在菜单中),但字符显示错误。

文本文件中数据的一个简单示例是:- Letzte VTR-Datei öffnen(我认为这是德语的“打开最近的 VTR 文件”-或类似的东西)

我看到的是 ö 字符被替换为顶部有 2 个点的大写字母 A。很可能所有的“国际”字符都被替换了。

我尝试将 encoding = "utf-8" 添加到我的源代码中,但没有帮助。

例如

from tkinter import *

root = Tk()

encoding = "utf-8"

prompt={}
language_file = open("Control_lang_de.txt", "r")
for pmts in language_file:
    pmt = pmts.strip()
    x = pmt.split("=")
    key = x[0].strip()
    value = x[1].strip()
    prompt[key] = value

language_file.close()
# This reads a line with OpenRecentVTRFile=Letzte VTR-Datei öffnen
# So now have prompt[OpenRecentVTRFile] containing the text.

# Now add to the menu...
main_menu = Menu(root)
root.config(menu=main_menu)
file_menu = Menu(main_menu, bd=2)
main_menu.add_cascade(label=prompt["OpenRecentVTRFile"], menu=file_menu)

root.mainloop()

标签: pythontkinter

解决方案


由于语言文件被编码为 utf-8,我所要做的就是让 python open 语句知道这一点。结果证明解决方案非常简单。我只需要添加 encoding="utf-8"到我的公开声明中。当我将其更改为它时, language_file = open("Control_lang_de.txt", "r", encoding="utf-8")它可以按要求工作。

感谢@SylvesterKruin 向我提出这个建议。`


推荐阅读