我有一个在 Python 2.7.5 上使用 PyQt5 (Qt5.1.1) 开发的应用程序。该应用程序广泛使用使用 from __future__ import unicode_literals 启用的 unicode 字符串。源代码设置为 # -*- coding: utf-8 -*- 因此 unicode 字符按原样写入源代码(无需转义)。
使用 pylupdate5 进行的翻译“有效”,因为字符串已被提取并且可以使用 Qt Linguist 进行翻译并重新应用。这对包含非 ASCII 字符和不包含非 ASCII 字符的字符串均有效。但是,任何包含 unicode 字符的字符串最终都会在 .ts 文件中包含乱码。例如 'Open' 后跟一个省略号输出为:
&Open…
单词后的位是省略号字符 (E2 80 A6) 的 unicode 代码单元,尽管这在 Qt Linguist 中显示为 ¦。翻译它(并在翻译中输入正确的 unicode 工作正常)。用更正的 unicode 替换 .ts 文件中的 â ¦ 会停止生成的翻译工作,这表明 tr 也看到了乱码版本。
那么这里发生了什么?
请您参考如下方法:
我对此经验很少,但查看我生成的一个 .ts 文件,第一行是 并且 BBEdit 确认它是 utf -8 编码。在这种情况下,应正确显示非 Latin-1 字符。事实上,我只是在 .ts 文件中的一个字符串中编辑了一个省略号,然后在 Linguist 中打开它,它显示正确。因此,这可能只是源文件或 .ts 文件的文件编码情况。
