Ich versuche, eine Bilddatei in django Admin inlines und bekommen UnicodeEncodeError zu laden, wenn eine Datei mit einem Dateinamen mit nicht-ASCII-Zeichen zu laden versuchen:UnicodeEncodeError beim Speichern Imagefield Nicht-ASCII-Zeichen in Django Admin enthält
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)
Es gibt einen Absatz über dieses Problem in Django Dokumente: http://docs.djangoproject.com/en/dev/howto/deployment/modpython/#if-you-get-a-unicodeencodeerror - sie sagen, ich muss definieren LANG und LC_ALL env-Variablen, plus ihre Definition mit os.env wird nicht funktionieren. Also habe ich sie in meinem .htaccess-Datei definiert und ich bin sicher, sie sind da:
META
Variable Value
CONTENT_LENGTH '27289'
...
LANG 'en_US.UTF-8'
LC_ALL 'en_US.UTF-8'
LC_LANG 'en_US.UTF-8'
Das Problem weiterhin besteht. Django-Version ist 1.2.3 (neueste stabile), sys.getfilesystememoding() (die ich glaube, dass für das Problem relevant ist) gibt "ANSI_X3.4-1968" zurück.
Der Modell-/Admin-Code ist nichts Besonderes: ein ArticleImage-Modell mit ImageField und ArticleAdmin mit ArticleImage-Inlines.
UPDATE Ich konnte dieses Problem nicht beheben, daher habe ich die Apache-Installation aufgegeben und die Anwendung mit runfcgi + nginx gestartet. Uploads funktionieren jetzt gut, aber ich füge das nicht als Lösung hinzu, weil die Frage über Apache war.
Danke. Wie mache ich das richtig und stelle sicher, dass es funktioniert? Ich habe meine/usr/sbin/envvars bearbeitet, indem ich diese Variablen hinzugefügt habe und das Python-Skript hat # - * - coding: utf-8 - * - – Andrey