使用Python与Tkinter读取文件时国际字符显示异常问题咨询
问题原因
- 你代码中仅定义了
encoding = "utf-8"变量,并未将该参数传入open()函数。Python 3在Windows平台默认使用系统本地编码读取文件,导致UTF-8编码的德语字符解码错误,出现特殊字符乱码的现象。 - 若传入encoding参数后仍未解决,说明你的文本文件本身并非UTF-8编码,德语区Windows系统默认保存txt使用
cp1252(Windows-1252)编码,编码不匹配也会导致乱码。
解决方案
Tkinter在Python 3中本身支持Unicode字符串,只要文件读取时解码正确,字符就能正常显示,按以下步骤修改即可:
方案1:修复open函数编码参数
将读取文件的代码替换为以下内容,显式传入UTF-8编码参数,同时使用with语句自动管理文件句柄,不需要手动关闭文件:
prompt={} # 直接把encoding参数传入open函数 with open("Control_lang_de.txt", "r", encoding="utf-8") as language_file: for pmts in language_file: pmt = pmts.strip() # 跳过空行和不符合格式的行,避免运行报错 if not pmt or "=" not in pmt: continue # 仅拆分第一个=,避免值中包含=时拆分错误 key, value = pmt.split("=", 1) prompt[key.strip()] = value.strip()
方案2:适配文件实际编码
如果修改后仍有乱码,说明你的文本文件不是UTF-8编码,按以下步骤操作即可:
- 用系统记事本打开
Control_lang_de.txt,点击「文件」-「另存为」,查看底部编码下拉框显示的当前文件实际编码 - 将open函数中的encoding参数替换为实际编码即可,德语文件常见可尝试
encoding="cp1252"或encoding="iso-8859-1"
内容的提问来源于stack exchange,提问作者RichyRich
相关产品推荐
相关产品推荐

