Юникод в админке Django - PullRequest
1 голос
/ 30 мая 2011

У меня проблема, когда я пытаюсь добавить картинки не только с помощью символов ascii через интерфейс администратора.

Всегда пытается конвертировать имя файла изображения в ascii:

UnicodeEncodeError at /admin/app/subpicture/add/
        ('ascii', u'/home/celtrun/rails/alphasteel/public/media/my_media/subpictures/Zdj\u0119cia_iPhone_wrzesie\u0144_320.jpg', 68, 69, 'ordinal not in range(128)')
Request Method: POST
Django Version: 1.3
Exception Type: UnicodeEncodeError
Exception Value:    
('ascii', u'/home/celtrun/rails/alphasteel/public/media/my_media/subpictures/Zdj\u0119cia_iPhone_wrzesie\u0144_320.jpg', 68, 69, 'ordinal not in range(128)')
Exception Location: /bin/python-2.6.1/lib/python2.6/genericpath.py in exists, line 18
Python Executable:  /bin/python-2.6.1/bin/python

И

Unicode error hint

The string that could not be encoded/decoded was: s/Zdjęcia_i

В результате изображение, которое я пытаюсь сохранить, не отображается в указанном хранилище. Файлы изображения сохраняются в этом хранилище, если в его именах нет символов юникода в имени файла. У кого-нибудь есть идеи, чтобы это исправить?

Ответы [ 2 ]

4 голосов
/ 15 августа 2013

Через 2 года у меня возникла та же проблема с CentOS6.4 и Django 1.5.

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

0 голосов
/ 07 июня 2011

Среда Apache по умолчанию в Ubuntu / * nix не допускает имен файлов, отличных от ASCII.Это приводит к довольно не интуитивному UnicodeEncodeError при отправке имен файлов Unicode в поле файла / поле изображения в администраторе Django.

Попробуйте добавить это в конфигурацию Apache (/etc/apache2/envvars):

export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'

А затем перезапустите сервер apache.

...