Seite 1 von 1

Probleme mit Sonderzeichen und Modul zipfile

Verfasst: Donnerstag 24. August 2006, 07:37
von HarryH
Hallo,

Ich habe folgendes Problem:
Wenn ich über das Modul 'zipfile' ein Archiv erstelle und dabei einige Dateinamen, der zu packenden Dateien, Sonderzeichen (ä, ü, ß ...) enthalten, werden diese in anderen Archivmanagern (z.B. Winzip ...) falsch dargestellt.
Umgedreht besteht das gleiche Problem.
Ich schätze mal das diese ein anders Encoding verwenden.
Wie kann ich das Problem beheben?

Wäre dankbar für eure Hilfe :D

Harry

Verfasst: Donnerstag 24. August 2006, 07:59
von BlackJack
Na einfach die gleiche Kodierung auf beiden Seiten verwenden. :-)

ZIPs kennen keine Kodierung, die Dateinamen sind einfach eine Folge von Bytes. Wie diese interpretiert werden ist Sache der Anwendung(en).

re:

Verfasst: Donnerstag 24. August 2006, 08:02
von HarryH
Hi BlackJack,

Danke für deine schnelle Antwort.
Wie kann ich herausfinden welche Codierung verwendet wird und wie lege ich diese fest?

Verfasst: Donnerstag 24. August 2006, 08:22
von jens
Aus http://docs.python.org/dev/lib/zipfile-objects.html :
Note: There is no official file name encoding for ZIP files. If you have unicode file names, please 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.

re:

Verfasst: Donnerstag 24. August 2006, 08:33
von HarryH
Wer lesen kann ist klar im Vorteil :oops:
Danke Jens!

Verfasst: Donnerstag 24. August 2006, 09:05
von jens
Naja, ist in der developer-Version der Doku, da hättest du bestimmt nicht nachgesehen... Ich weiß das auch nur, weil ich selber Angestoßen hab, das diese Notiz in die Doku kommt :)

re:

Verfasst: Donnerstag 24. August 2006, 11:42
von HarryH
Kann ich mein Script so umstellen, dass es auch automatisch mit dem Codec CP437 arbeitet?
Wenn ja, Wie?
Was ist denn die beste Alternative um die Dateinamen korrekt darzustellen?

Verfasst: Donnerstag 24. August 2006, 14:55
von jens
Schau mal hier: [wiki]Unicode[/wiki]

und hier: http://www.python-forum.de/topic-5580.html