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