Python 即使使用gettext.bind“u textdomain”代码集(“fr”和“iso-8859-1”)翻译也会产生奇怪的字符

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

我正在将Python应用程序翻译成法语。我生成了
.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
文件行的十六进制转储或Python
repr()
输出吗?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编解码器显示写入控制台的数据。