Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Вопрос по перекодировке имен файлов в приложении на Django [RSS Feed]

#1 Янв. 22, 2014 16:23:26

Andrejus
От:
Зарегистрирован: 2011-03-22
Сообщения: 64
Репутация: +  1  -
Профиль   Отправить e-mail  

Вопрос по перекодировке имен файлов в приложении на Django

Доброго времени суток.

Задача такая: пользователи на windows-ПК прикрепляют файлы через соотв. поле в форме. Django работает на RHEL5.

При попытке сохранить файл с кириллическим именем получаю

UnicodeEncodeError at /addfile/
'ascii' codec can't encode characters in position 52-60: ordinal not in range(128)

Кто-нибудь решал подобную задачу?



Офлайн

#2 Янв. 23, 2014 00:12:05

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Вопрос по перекодировке имен файлов в приложении на Django

несколько странно, ведь Джанго получает данные формы преобразовывая их в Unicode объекты, и вы далее должны работать именно с ними,а не с обычными строками. И соответственно при сохранении файла с таким именем должно произойти корректное преобразование уникода в строку в соответствии с настройками вашей ОС, где я уверен UTF-8.

Проверяйте выше сказанное, да и не плохо бы код увидеть



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Янв. 27, 2014 08:55:14

Andrejus
От:
Зарегистрирован: 2011-03-22
Сообщения: 64
Репутация: +  1  -
Профиль   Отправить e-mail  

Вопрос по перекодировке имен файлов в приложении на Django

JOHN_16
несколько странно, ведь Джанго получает данные формы преобразовывая их в Unicode объекты, и вы далее должны работать именно с ними,а не с обычными строками. И соответственно при сохранении файла с таким именем должно произойти корректное преобразование уникода в строку в соответствии с настройками вашей ОС, где я уверен UTF-8.Проверяйте выше сказанное, да и не плохо бы код увидеть

код:
class Doc(models.Model):
    DOC_DIRECT = (('I', 'ВХ'), ('O', 'ИСХ'), )
    
    direction = models.CharField(max_length=1, default="I", choices=DOC_DIRECT) # Входящий или исходящий
    reg_tag = models.CharField(max_length=30, default='', null=True, blank=True) # рег номер и дата ВЦ, дата - обязательна
    reg_date = models.DateField(default=date.today())
    ext_reg_tag = models.CharField(max_length=30, null=True, blank=True) # рег номер и дата канцелярии, необязательны
    ext_reg_date = models.DateField(blank=True, null=True) 
    file = models.FileField(upload_to='') # Прикреплённый файл

Только указанной проблемы в коде нет :)
Проблема в том, что апач в деплое под линуксом получает неверную кодировку файловой системы:
Четать туд



Отредактировано Andrejus (Янв. 27, 2014 08:56:05)

Офлайн

  • Начало
  • » Django
  • » Вопрос по перекодировке имен файлов в приложении на Django[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version