मैं जब एक फ़ाइल नाम गैर- ASCII वर्ण युक्त के साथ एक फ़ाइल अपलोड करने की कोशिश Django व्यवस्थापक inlines में एक छवि फ़ाइल अपलोड करने के लिए कोशिश कर रहा हूँ और UnicodeEncodeError हो रही:UnicodeEncodeError जब ImageField बचत Django व्यवस्थापक में गैर- 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 दस्तावेज़ों में इस समस्या के बारे में एक अनुच्छेद है: 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 के साथ एक आलेख छवि मॉडल, और ArticleAmmin ArticleAmmin युक्त ArticleAdmin।
अद्यतन मैं इस समस्या को ठीक नहीं कर सका इसलिए मैंने अपाचे सेटअप का उपयोग करके छोड़ दिया है और runfcgi + nginx का उपयोग कर एप्लिकेशन शुरू किया है। अपलोड अब ठीक काम करते हैं लेकिन मैं इसे समाधान के रूप में नहीं जोड़ रहा हूं क्योंकि सवाल अपाचे के बारे में था।
धन्यवाद। मैं इसे ठीक से कैसे करूं और सुनिश्चित कर सकता हूं कि यह काम करता है? मैंने इन चरों को जोड़ने के लिए अपना/usr/sbin/envvars संपादित किया है और पायथन लिपि में # - * - कोडिंग है: utf-8 - * - – Andrey