python - 使用 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()
解决方案
由于语言文件被编码为 utf-8,我所要做的就是让 python open 语句知道这一点。结果证明解决方案非常简单。我只需要添加
encoding="utf-8"
到我的公开声明中。当我将其更改为它时,
language_file = open("Control_lang_de.txt", "r", encoding="utf-8")
它可以按要求工作。
感谢@SylvesterKruin 向我提出这个建议。`
推荐阅读
- javascript - 在不使用剪贴板的情况下创建文本选择的克隆
- java - java.lang.NoClassDefFoundError:com/nimbusds/jose/JOSEException 在 java 中使用 Adobe PDF 服务 api 时
- laravel - Docker 和 Laravel
- python - 使用win32com通过复制幻灯片的方式组合powerpoint演示
- java - 找到总和最小的 k 对
- linux - 我的 zookeeper systemd 服务中没有使用变量
- github-actions - 如何在语义发行说明生成器中添加自定义发行说明?
- python - 在 Pandas 中跨多个 groupby 运行数学计算结果
- c++ - 如何使用 TensorFlow 构建安装 XLA C++ API?
- oracle - 在 oracle 中创建一个空表以及分区和索引是永远的