tkinter 中的扩展 ASCII

Extended ASCII in tkinter

我正在尝试创建一个显示随机单词的灵感应用。它适用于字母字符,但是当一个单词中包含 öäüß 之类的字符时,它只会显示随机的乱码。

需要的文字:Rindfleischverpackungsetikettierungsgerät

显示的文字:Rindfleischverpackungsetikettierungsgerßt

另一个例子:

这是我的代码(仍然非常基础和实用)

import tkinter as tk
from random import randint

class ButtonBlock(object):
    def __init__(self, master):
        self.master = master
        self.button = []
        self.button_val = tk.IntVar()
        entry = tk.Entry()
        entry.grid(row=0, column=0)
        entry.bind('<Return>', self.onEnter)
    def onEnter(self, event):
        entry = event.widget
        num = int(entry.get())
        for button in self.button:
            button.destroy()
        for i in range(1, num+1):
            leine = randint(1, 1908815)
            print(leinen[leine])
            self.button.append(tk.Label(
                self.master, text=leinen[leine]))
            self.button[-1].grid(sticky='WENS', row=i, column=2, padx=1, pady=1)
    def onSelect(self):
        print(self.button_val.get())


if __name__ == '__main__':

    deutsch = open("WORT.txt", "r")
    leinen = deutsch.readlines()

    root = tk.Tk()
    ButtonBlock(root)
    root.mainloop()

有什么方法可以让 tkinter 正确渲染字符 öäüß? (顺便说一句 WORT.txt 只是一个单词表)

要读取文本文件中的扩展 ASCII 字符,请在 open 文件时指定编码,如下所示:

deutsch = open("WORT.txt", "r", encoding="latin1")

这需要完成,因为如果未指定 encoding,则使用的默认值取决于平台(显然不需要 "latin1" 在你的系统上)。请参阅 built-in open() 函数的文档。