Я пытаюсь загрузить файл изображения в inline администратора django и получаю UnicodeEncodeError при попытке загрузить файл с именем файла, содержащим не-ascii символы:
File "/usr/local/lib/python2.6/site-packages/django/db/models/fields/files.py", line 92, in save
self.name = self.storage.save(name, content)
File "/usr/local/lib/python2.6/site-packages/django/core/files/storage.py", line 47, in save
name = self.get_available_name(name)
File "/usr/local/lib/python2.6/site-packages/django/core/files/storage.py", line 73, in get_available_name
while self.exists(name):
File "/usr/local/lib/python2.6/site-packages/django/core/files/storage.py", line 196, in exists
return os.path.exists(self.path(name))
File "/usr/local/lib/python2.6/genericpath.py", line 18, in exists
st = os.stat(path)
В Django docs есть параграф об этой проблеме: http://docs.djangoproject.com/en/dev/howto/deployment/modpython/#if-you-get-a-unicodeencodeerror - они говорят, что я должен определить переменные env LANG и LC_ALL, плюс определение их с помощью os.env не будет работать. Поэтому я определил их в своем файле .htaccess, и я уверен, что они там есть:
META
Variable Value
CONTENT_LENGTH '27289'
...
LANG 'en_US.UTF-8'
LC_ALL 'en_US.UTF-8'
LC_LANG 'en_US.UTF-8'
Проблема все еще существует. Версия Django 1.2.3 (последняя стабильная), sys.getfilesystemencoding () (которая, я считаю, имеет отношение к проблеме) возвращает «ANSI_X3.4-1968».
Код модели / администратора не является чем-то особенным: модель ArticleImage с ImageField и ArticleAdmin, содержащий встроенные ArticleImage.
ОБНОВЛЕНИЕ Я не мог решить эту проблему, поэтому я перестал использовать настройку apache и запустил приложение с помощью runfcgi + nginx. Загрузка теперь работает нормально, но я не добавляю это как решение, потому что вопрос был о apache.