python - 标签文本未显示“á”(匈牙利语)字母
问题描述
我想在 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
文本,但是它们太多了。有没有更简单的方法?
解决方案
显然,这是 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())
这给我指出了答案。
推荐阅读
- c - C- strlen() 中针对单词列表问题的分段错误
- ruby-on-rails - 如何连接到 redis-rb 中的集群 Azure Redis 缓存?
- azure - Azure Cosmos DB 中存储的单个文档的大小限制是多少
- c++ - 如何确保我的节点被添加到链表
- java - 客户在困的理发师问题中等待理发时的信号量值?
- ionic-framework - 如何检测用户何时至少打开和关闭了一次选择
- laravel - 在laravel中将格式更改为对象?
- ruby-on-rails - 从 AngularJS 中检索 Rails flash 数据
- html - 更改状态时复选框元素的怪癖
- jquery - 为什么我的网页会引发 POST 调用错误?