我想上傳Django管理行內的圖像文件,並得到UnicodeEncodeError試圖上傳包含非ASCII字符的文件名的文件時:UnicodeEncodeError
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文檔中有關於這個問題的一段:http://docs.djangoproject.com/en/dev/howto/deployment/modpython/#if-you-get-a-unicodeencodeerror - 他們說我必須定義LANG和LC_ALL env變量,再加上使用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」。
模型/管理代碼沒什麼特別:帶有ImageField的ArticleImage模型和含有ArticleImage內聯的ArticleAdmin。
UPDATE我無法解決這個問題,所以我放棄了使用Apache安裝程序並使用runfcgi + nginx啓動應用程序。上傳現在可以正常工作,但我並沒有將其作爲解決方案添加,因爲問題與apache有關。
謝謝。我該如何做到這一點,並確保它的工作?我已經編輯了添加這些變量的/ usr/sbin/envvars,並且python腳本有# - * - coding:utf-8 - * - – Andrey 2010-12-11 05:19:17