首页 > 解决方案 > 标签文本未显示“á”(匈牙利语)字母

问题描述

我想在 kivy 应用程序中显示匈牙利语字母,但是每当我使用é,或其他一些字母时,它都会像这样显示 ( á- > )( -> ) ( -> )öééááöö

例子:

ButtonF:
    id: beallit
    pos_hint: {'x': .375, 'y': .27}
    text: "Beállitások"

现在这个按钮的文本显示为:Beállitások

我尝试将字体更改为支持匈牙利字母的字体,即使文本的字体更改了字母仍然没有显示。

例子:

ButtonF:
    id: beallit
    pos_hint: {'x':.375, 'y': .27}
    text: "Beállitások"
    font_name: 'OpenSans'
    on_release: app.root.ids.sm.current  = 'screen5'

这里的Button's文本是 OpenSans 字体,但它仍然不显示匈牙利字母:Beállitások

但是,当我从 python 代码而不是 kivy 规则编写按钮的文本时,包含匈牙利字母的文本会正确显示。

在py中:

beallit_text = StringProperty()
beallit_text = 'Beállitások'

千伏:

ButtonF:
    id: beallit
    pos_hint: {'x':.375, 'y': .27}
    text: root.beallit_text
    font_name: 'OpenSans'
    on_release: app.root.ids.sm.current  = 'screen5'

现在我可以更改 py 代码中的所有Label's/Button's文本,但是它们太多了。有没有更简单的方法?

标签: pythonkivy

解决方案


显然,这是 Kivy 中使用非 UTF-8 编码(例如 chcp 1252)的常见编码问题。一种方法是只找到文本的编码版本。例如,你可以做什么来代替这个

ButtonF:
    text: 'Título'

就是在字面上使用它的 UTF-8 编码版本。

ButtonF:
    text: str(b'T\xc3\xadtulo'.decode())

对于您的情况,á -> \xc3\xa1 (in UTF-8 literal). 您可以在此处查看整个列表。

或者,您可以简单地识别使用的编码。确保您的.kv文件保存在UTF-8

from kivy.lang import Builder
with open('MyApp.renamed.kv', encoding='utf8') as f: 
    Builder.load_string(f.read())

给我指出了答案。


推荐阅读