Python Gui中的utf8编码

2024-10-01 02:37:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有英语和匈牙利语的简单应用程序。所有可本地化的都在单独的模块中-可本地化.py,例如:

#!/usr/bin/python
# -*- coding: utf-8 -*-
...
...
if language == "hun":
    LOGIN_LABEL_USERNAME_STR                    = 'Felhasználó'
    LOGIN_LABEL_PASSWORD_STR                    = 'Jelszó'
elif language == "eng":    
    LOGIN_LABEL_USERNAME_STR                    = 'Username'
    LOGIN_LABEL_PASSWORD_STR                    = 'Password'

但是当我在loginDialog.py公司名称:

^{pr2}$

我得到Felhasználó和{},取而代之的是Felhasználó和{}。 任何帮助都将不胜感激。在


Tags: 模块py应用程序ifbinusrusernamelogin
2条回答

为什么不在localizable模块中使用unicode对象,而不是没有编码的bytestrings?在

if language == "hun":
    LOGIN_LABEL_USERNAME_STR                    = u'Felhasználó'
    LOGIN_LABEL_PASSWORD_STR                    = u'Jelszó'

这对我有预期的效果。在

您可能还需要考虑使用Qt提供的built-in functions。在

这是因为源文件是UTF8编码的,这意味着字符串Felhasználó在源代码文件中用字节46 65 6c 68 61 73 7a 6e c3 a1 6c c3 b3表示。如果您将这个字节数组打印出来,就好像它们是用拉丁语1编码的,那么您将得到Felhasználó。在

此外,您将这些UTF-8编码的字节作为一个纯字符串传递给Qt,Qt似乎假定它是拉丁1编码。这意味着不再假设字节c3 b3ó)是ó的代码,而是假设c3是普通的Ã,而{}是{},这是LATIN1的情况。在

frb的答案是正确的方法,因为通过发送一个unicode字符串,您已经完成了所有的解释,并且没有给Qt留下模糊性。在

相关问题 更多 >