Найти - Пользователи
Полная версия: опять кодировка с zipом
Начало » Python для новичков » опять кодировка с zipом
1
xyxel
Правильно ли я понимаю, что в результате этого кода, я в zip-архив записываю файл с названием в unicode-кодировке?

zout = zipfile.ZipFile(“test.zip”, “w”)
zout.write(“cr.conf”, u'кириллица.conf')
zout.close()

Если да, то почему в архиве вместо названия вопросительные знаки
Ed
Иногда полезно читать доки, они как говорили в старину, рулез :)
Note
There is no official file name encoding for ZIP files. If you have unicode file names, you must convert them to byte strings in your desired encoding before passing them to write(). WinZip interprets all file names as encoded in CP437, also known as DOS Latin.
Андрей Светлов
Заявление о том, что zipfile поддерживает только cp437 не совсем верно.

Начиная с python 2.6 имена могут писаться в utf-8 (не путайте с unicode), устанавливая 0x800 в флагах
xyxel
А можно ссылку на какую-нибудь полезную статью? (На форуме искал) А то, либо про кодировку читаю, либо про zip. А связать их вместе, что-то ну никак не получается.
xyxel
То есть выглядеть должно примерно так:
zout = zipfile.ZipFile(“test.zip”, “w”)
s = u'кириллица.conf'
zout.write(“cr.conf”, s.encode('cp437'))
zout.close()
Верно?
Но в этом случае выдает UnicodeEncodeError.
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