Python 即使使用gettext.bind“u textdomain”代码集(“fr”和“iso-8859-1”)翻译也会产生奇怪的字符
我正在将Python应用程序翻译成法语。我生成了Python 即使使用gettext.bind“u textdomain”代码集(“fr”和“iso-8859-1”)翻译也会产生奇怪的字符,python,gettext,Python,Gettext,我正在将Python应用程序翻译成法语。我生成了.po文件,但我有一个问题,法语字符显示不正确 例如: exÚcution出现exÚcution 附:我正在使用gettext进行翻译 即使我使用chcp 1252,它也不起作用。。我正在使用Pydev,当我尝试将数据打印到Pydev控制台时,它工作正常,但不是我想要的:这是我将处理程序添加到记录器的方式,可能是问题所在: if givesFileName: if FileName is None: prin
.po
文件,但我有一个问题,法语字符显示不正确
例如:
exÚcution
出现exÚcution
附:我正在使用gettext
进行翻译
即使我使用chcp 1252,它也不起作用。。我正在使用Pydev,当我尝试将数据打印到Pydev控制台时,它工作正常,但不是我想要的:这是我将处理程序添加到记录器的方式,可能是问题所在:
if givesFileName:
if FileName is None:
print('Please specify an output Text File Name')
# Exit with error
sys.exit()
#create file handler
fh = logging.handlers.RotatingFileHandler(FileName, mode="w",encoding="utf-8")
fh.setLevel(logging.DEBUG)
logger.addHandler(fh)
else:
#create console handler
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
logger.addHandler(ch)"
您的数据正在解码为,而不是拉丁语1:
>>> print u'exécution'.encode('latin1').decode('ibm850')
exÚcution
这意味着您的数据已从文件中正确读取,但在输出时,您的数据被编码为不正确的代码页。您的文件很可能未编码为ISO-8859-1。您能给我们展示一些
.po
文件行的十六进制转储或Pythonrepr()
输出吗?msgid“msgstr”“最后一个翻译器:\n”“语言团队:法语\n”“MIME版本:1.0\n”“内容类型:text/plain;charset=iso-8859-1\n”“内容传输编码:utf-8\n”“复数形式:nplurals=2;复数=(n>1);\n”#:main.py:183 msgid““\n”**应用程序**\n“msgstr”\n**应用程序**\n“#:main.py:184 msgid”Start:Function Name=Aggreg:\n“msgstr”Début:Ex cution de la founction Aggrég:\n“#:main.py:185 msgid”保留参数:\n“msgstr”Les Param tres retenus sont:\n”啊,不,您的数据再次被编码错误。你是如何输出翻译后的数据的?logging.info(u(“我的数据”))谢谢你的回答,那么我应该怎么做才能解决这个问题?@user3328690:这取决于你的程序输出文本的方式。你需要向我们提供这方面的信息。你的应用程序是web应用程序吗?桌面应用程序?控制台应用程序?这里不清楚。我的应用程序是一个控制台应用程序,它输出数据:logging.info(u(“我的数据”)@user3328690:这是在Windows控制台上吗?因此您的Windows控制台配置错误。Python被告知在写入控制台时使用拉丁1编解码器,但控制台随后使用IBM850编解码器显示写入控制台的数据。