Найти - Пользователи
Полная версия: проблема с русскими буквами в названии файлов, упакованных в zip
Начало » Python для экспертов » проблема с русскими буквами в названии файлов, упакованных в zip
1
axe
в 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. Как?
doza_and
axe
Как?
Вроде поднимался этот вопрос на форуме. Не припомню когда. Вывод был такой. Никак. в формате zip не предусмотрена информация о исходной кодировке названия файла.

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

Написав “получить названия файлов в utf8”, я имел в виду не содержимое файла, а то, что название может быть любым, а мне нужно преобразовать его к понятному utf-8.
В-принципе, есть обходной путь - использовать chardet… но хочется убедиться, что нет решения лучше.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB