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