2016-10-28 73 views
0

我有這個django網站從locale/lc_messages/django.po和django.mo文件從英語翻譯成德語。但是,當我試着翻譯這是在德國的信件像你和A的話,它給我的錯誤如何解決Django翻譯ASCII解碼錯誤?

'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:\Users\deybala1\AppData\Local\Continuum\Anaconda2\lib\site-packages\django\utils\encoding.py in force_text, line 88 
Python Executable: C:\Users\deybala1\AppData\Local\Continuum\Anaconda2\python.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 

這是我MSGID,msgstr等從django.po

#: .\app\templates\app\layout.html:47 
msgid "Take Exam" 
msgstr "Eine prüfung anlegen" 
+1

請顯示完整的回溯。 –

+0

你在文件的第一行有'#coding:utf-8'嗎? –

+0

你想讓我擁有那個?我試着把它放在我的項目中的所有py文件中。但是,這是由於這個?我認爲錯誤是在將utf 8解碼爲ascii的時候。 – Yogi

回答

1

找到解決方案,必須將所有.po文件中的標題放在頂部。

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

感謝您的幫助。使用poedit來處理.po文件是更好的解決方案

0

莫不是在po文件中的問題(這是Python 2.7版)?您可以嘗試:

msgstr u"Eine prüfung anlegen" 
+0

我試過msgstr「u'Eineprüfunganlegen'」。但不起作用。同樣的錯誤。是的,它是Python 2.7 – Yogi