2010-03-16 18 views
6

Modele örnek ismiyle instance.mile_field.save yöntemiyle Rusça sembolleri içeren bir dosya eklemeyi denediğimde, bir UnicodeDecodeError (ascii kod çözme hatası aldım) aralığı (128) depolama arka ucundan (stacks.tu üzerinde sona erdi) .Bu dosyayı varsayılan python dosyası ile yazdığımda açık/yazma her şey doğru gidiyor. utf-8'deki tüm dosya isimleri. Bu hatayı sadece Gentoo'nun test edilmesinde benim Ubuntu iş istasyonu tüm gayet iyi çalışıyorUnicodeDecodeError django varsayılan dosya üzerinden dosya kaydetme girişiminde bulunmadı backeb

class Article(models.Model): 
    file = models.FileField(null=True, blank=True, max_length = 300, 
          upload_to='articles_files/%Y/%m/%d/') 

Traceback: 
File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py" in get_response 
    100.      response = callback(request, *callback_args, **callback_kwargs) 
File "/usr/lib/python2.6/site-packages/django/contrib/auth/decorators.py" in _wrapped_view 
    24.     return view_func(request, *args, **kwargs) 
File "/var/www/localhost/help/wiki/views.py" in edit_article 
    338.     new_article.file.save(fp, fi, save=True) 
File "/usr/lib/python2.6/site-packages/django/db/models/fields/files.py" in save 
    92.   self.name = self.storage.save(name, content) 
File "/usr/lib/python2.6/site-packages/django/core/files/storage.py" in save 
    47.   name = self.get_available_name(name) 
File "/usr/lib/python2.6/site-packages/django/core/files/storage.py" in get_available_name 
    73.   while self.exists(name): 
File "/usr/lib/python2.6/site-packages/django/core/files/storage.py" in exists 
    196.   return os.path.exists(self.path(name)) 
File "/usr/lib/python2.6/genericpath.py" in exists 
    18.   st = os.stat(path) 

Exception Type: UnicodeEncodeError at /edit/ 
Exception Value: ('ascii', u'/var/www/localhost/help/i/articles_files/2010/03/17/\u041f\u0440\u0438\u0432\u0435\u0442', 52, 58, 'ordinal not in range(128)') 
+0

'a dönmektir. Model tanımınızı görmenize yardımcı olabilir. –

+0

O zamanki var sınıf Madde (models.Model): ... file = models.FileField (boş = Doğru, boş = Doğru, maks_uzunluk = 300, upload_to = 'articles_files /% E /% m /% d/') –

+0

Tam geri izleme de yararlı olacaktır. –

cevap

4

çözümoldukça basittir: revizyon 12659 Bu hata olarak

giderilmiştir. http://code.djangoproject.com/ticket/11030

Ama revizyon 12661 bunu döndürüldü

"(In [12661]) Sabit # 11030: geri döndürüldü dosya sistemi kodlama utf8 olduğunu düşünmüştüm ve bozuk bu varsayım olmayan yüklenen nasıl çalıştığını göstermek için bir test değiştiren bir değişiklik Dosya sistemi kodlama olarak utf8 kullanmayan sistemlerde -ASCII dosya isimleri (Windows için bir, özellikle). Rapor için vrehak için teşekkürler. "

Bu yüzden tek yapmam gereken 12659

+3

Aslında, Apache'de uygun ortamı ayarlamanız gerekiyor: http://code.djangoproject.com/ticket/11030#comment:5 –

+0

Gerçekten doğru çözüm olan @TomaszZielinski teşekkür ederiz. – Andrea

0

Ben sadece upload_to nitelik unicode olduğundan emin olduktan meselesi şüpheli.

+0

Hiçbir şey değişmedi. –

İlgili konular