Форум сайта python.su
Уже был такой пост
был совет выполнить quote
if request.method == 'POST':
f = ProjectAttachForm(request.POST, request.FILES, instance=project_attach)
from urllib import quote
#print quote(request.FILES)
attached_file = request.FILES[u'attached_file']
attached_file.name = quote(unicode(attached_file.name).encode('utf-8'))
request.FILES[u'attached_file'] = attached_file
#print quote(request.FILES[u'attached_file']) #.encode('utf-8') #quote(unicode(request.FILES).encode('utf-8'))
if f.is_valid():
attach = f.save(commit = False)
attach.save()
return HttpResponseRedirect(reverse('project_details', args=(project_id,)))
Офлайн
Предположу, что:
а) можно попробовать сохранять имена в юникоде;
б) или в зависимости от платформы выставлять нужную кодировку и декодировать-кодировать имена файлов в неё;
в) не советую в частовыполняемую функцию пихать импорты
from urllib import quote
Офлайн
В том и дело, что имя файла в кодировке 1251
а сохраняет в Linux в UTF8
Но ведь должна быть стандартная перекодировка, зависимая от платформы и настройка в Django?
А импорт, я уберу, пробовал просто работу функции quote.
и далее не работает с UTF8
nname=u"Иванов".encode('utf8')
name=nname.capitalize()
#name= nname[:1] + nname[1:].lower()
print name
us = User.objects.get(first_name__iexact = name)
Офлайн
В Django настроек нет. Питон содержит sys.getfilesystemencoding()
Офлайн