如何修复Django翻译ASCII解码错误



我有这个django网站从英语翻译成德语从locale/lc_messages/django。阿宝和姜戈。mo文件。但是,当我试图翻译像ü和ä这样的德语字母时,它会给我错误

'ascii' codec can't decode byte 0xc3 in position 7: ordinal not in range(128)

据我所知,django试图通过ASCII解码unicode字符,这是不可能的。但是我该如何解决这个问题呢?我应该在哪里设置django通过utf-8解码,而不是通过ASCII。如果我错了,请告诉我。

回溯:

DjangoUnicodeDecodeError at /de/
'ascii' codec can't decode byte 0xc3 in position 7: ordinal not in range(128). You passed in <django.utils.functional.__proxy__ object at 0x0000000005EB40B8> (<class 'django.utils.functional.__proxy__'>)
Request Method: GET
Request URL:    http://127.0.0.1:8000/de/
Django Version: 1.10.1
Exception Type: DjangoUnicodeDecodeError
Exception Value:    
'ascii' codec can't decode byte 0xc3 in position 7: ordinal not in range(128). You passed in <django.utils.functional.__proxy__ object at 0x0000000005EB40B8> (<class 'django.utils.functional.__proxy__'>)
Exception Location: C:Usersdeybala1AppDataLocalContinuumAnaconda2libsite-packagesdjangoutilsencoding.py in force_text, line 88
Python Executable:  C:Usersdeybala1AppDataLocalContinuumAnaconda2python.exe
Python Version: 2.7.11
Python Path:    
['C:\Users\deybala1\Documents\pe-locator',
 'C:\Users\deybala1\AppData\Local\Continuum\Anaconda2\lib\site-packages\pyexcel-0.2.3-py2.7.egg',
 'C:\Users\deybala1\AppData\Local\Continuum\Anaconda2\lib\site-packages\django_registration-2.1.2-py2.7.egg',
 'C:\Users\deybala1\AppData\Local\Continuum\Anaconda2\lib\site-packages\django_http_proxy-0.4.3-py2.7.egg',
 'C:\Users\deybala1\AppData\Local\Continuum\Anaconda2\lib\site-packages\django_redis-4.4.4-py2.7.egg',
 'C:\Users\deybala1\AppData\Local\Continuum\Anaconda2\lib\site-packages\django_redis_sessions-0.5.6-py2.7.egg',
 'C:\Users\deybala1\AppData\Local\Continuum\Anaconda2\python27.zip',
 'C:\Users\deybala1\AppData\Local\Continuum\Anaconda2\DLLs',
 'C:\Users\deybala1\AppData\Local\Continuum\Anaconda2\lib',
 'C:\Users\deybala1\AppData\Local\Continuum\Anaconda2\lib\plat-win',
 'C:\Users\deybala1\AppData\Local\Continuum\Anaconda2\lib\lib-tk',
 'C:\Users\deybala1\AppData\Local\Continuum\Anaconda2',
 'c:\users\deybala1\appdata\local\continuum\anaconda2\lib\site-packages\sphinx-1.3.5-py2.7.egg',
 'c:\users\deybala1\appdata\local\continuum\anaconda2\lib\site-packages\setuptools-20.3-py2.7.egg',
 'C:\Users\deybala1\AppData\Local\Continuum\Anaconda2\lib\site-packages',
 'C:\Users\deybala1\AppData\Local\Continuum\Anaconda2\lib\site-packages\win32',
 'C:\Users\deybala1\AppData\Local\Continuum\Anaconda2\lib\site-packages\win32\lib',
 'C:\Users\deybala1\AppData\Local\Continuum\Anaconda2\lib\site-packages\Pythonwin']
Server time:    Fr, 28 Okt 2016 04:58:23 -0500
Unicode error hint
The string that could not be encoded/decoded was: ne pr��fung

这是django.po中我的msgstr和msgstr

#: .apptemplatesapplayout.html:47
msgid "Take Exam"
msgstr "Eine prüfung anlegen"

找到了解决方案,必须将标题放在所有。po文件的顶部。

"MIME-Version: 1.0n"
"Content-Type: text/plain; charset=UTF-8n"
"Content-Transfer-Encoding: 8bitn"
"Plural-Forms: nplurals=2; plural=(n != 1);n"

谢谢大家的帮助。使用poedit处理.po文件

是更好的解决方案。

po文件可能有问题(它是python 2.7)?你可以试试:

msgstr u"Eine prüfung anlegen"

相关内容

最新更新