标签的文字未显示“á”(匈牙利)字母

时间:2019-08-13 10:26:58

标签: python kivy

我想在一个kivy应用程序中显示匈牙利语字母,但是每当我使用éáö或其他一些字母时,它都将显示为({{1} }-> é)(é-> á)(á-> ö

示例:

ö

现在此按钮的文本显示为: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' 文本为OpenSans字体,但仍不显示匈牙利字母:Button's

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

在py中

Beállitások

在kv中:

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

现在我可以从py代码中更改所有ButtonF: id: beallit pos_hint: {'x':.375, 'y': .27} text: root.beallit_text font_name: 'OpenSans' on_release: app.root.ids.sm.current = 'screen5' / Label's文本,但是它们太多了。 有没有更简单的方法?

1 个答案:

答案 0 :(得分:3)

显然,这是在使用非UTF-8编码(例如chcp 1252)的Kivy中的常见编码问题。一种方法是只查找文本的编码版本。例如,您可以代替此方法

ButtonF:
    text: 'Título'

用于在文字上使用其UTF-8编码版本。

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

对于您而言,á -> \xc3\xa1 (in UTF-8 literal)。您可以查看整个列表here

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

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

this向我指出了答案。