2015-06-29 3 views
0

Я пробовал this SO answer, this doc is inapplicable как я бегу nginx, я добавил charset utf-8; в мою конфигурацию nginx, и я до сих пор получаю эту ошибку.UnicodeEncodeError с nginx и django

Обобщенная отслеживающий здесь:

UnicodeEncodeError at/

'ascii' codec can't encode character u'\xe1' in position 69: ordinal not in range(128) 


Request Method:  GET 
Request URL: http://django/ 
Django Version:  1.4.20 
Exception Type:  UnicodeEncodeError 
Exception Value:  

'ascii' codec can't encode character u'\xe1' in position 69: ordinal not in range(128) 

Exception Location:  /opt/envs/venv/lib/python2.7/genericpath.py in getmtime, line 54 
Unicode error hint 

The string that could not be encoded/decoded was: choacán.jpg 
+1

У вас USE_I18N = True в settings.py? – nnmware

+0

Да, да. Это всегда было. Это сайт, который работает в другой коробке, так что вряд ли это будет проблемой django, поскольку тот же код, тот же самый venv, те же настройки используются в другом месте с успехом. –

ответ

0

Я думаю, что эта ошибка не о Nginx. Он находится на этапе создания файла. Python использует системный язык при сохранении файлов.

Проверьте язык системы:

$ python manage.py shell 
> import os 
> print os.popen("locale").read() 

Если это неправильно, вы должны установить системную локаль.

Но такие имена файлов могут вызвать любые проблемы для пользователей. Пожалуйста, подумайте об определении пользовательского хранилища файлов для моделей. FileField и генерации произвольного имени файла для каждого файла - это хорошая практика.

Смежные вопросы