Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 10, 2014 21:43:44

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

проблема с русскими буквами в названии файлов, упакованных в zip

в zip-файле файл с русским названием

from zipfile import *
zipfile = ZipFile('./1.zip', 'r')
names = zipfile.namelist()
for name in names:
    print name
zipfile.close()

[root@dev py-temp]# python26 test.py
▒▒ ▒▒▒▒ ▒▒ ▒▒▒▒▒▒ ▒▒諨.xlsx
можно сделать .decode('cp866') и будет локальное счастье…
но проблема в том, что файлы могут называться на любом языке (французском, немецком, и т.д.).
Поэтому мне надо каким-то образом получить названия файлов в utf8. Как?



Офлайн

#2 Июнь 10, 2014 22:11:59

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

проблема с русскими буквами в названии файлов, упакованных в zip

axe
Как?
Вроде поднимался этот вопрос на форуме. Не припомню когда. Вывод был такой. Никак. в формате zip не предусмотрена информация о исходной кодировке названия файла.

Извините за занудство. но вы исходно можете думать что файл в кодировке utf8, это вопрос соглашения. Вы наверное имели ввиду получить имя в unicode.



Офлайн

#3 Июнь 10, 2014 22:43:07

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

проблема с русскими буквами в названии файлов, упакованных в zip

Да, что-то мне попадалось при поиске, в том числе плохо понятая для меня спецификация zip. На русском языке информации мало, поэтому полезно ещё разок поднять тему.

Написав “получить названия файлов в utf8”, я имел в виду не содержимое файла, а то, что название может быть любым, а мне нужно преобразовать его к понятному utf-8.
В-принципе, есть обходной путь - использовать chardet… но хочется убедиться, что нет решения лучше.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version