Leser: 16
system ('/usr/bin/unzip','ziparchiv','-d','/Zielverzeichnis');
QuoteLANG=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_ALL=
print setlocale(LC_CTYPE); # Ergebnis "C"
Quote0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
2009-04-29T21:12:32 frankes[...]
Das Problem scheint zu sein, dass ZIP Archive (zumindest unter unzip) nicht den charset der Dateinamen mit speichert (kommt wohl in Version 6).
[...]
2009-04-30T19:22:02 frankes[...]
Wie oben beschrieben bekomme ich die Files angezeigt, im FTP-Client als auch im also auch mit den Perl Verzeichnis und Dateioperationen, also auch über Shell Aufrufe (in meinem Fall mittels Perl system() )
Datei Operationen mittels FTP Client, Perl und Shell wie umbenennen, löschen etc. führen beim FTP Client, Perl als auch der Shell zur Fehlermeldung, dass das File nicht existieren würde.
[...]
Quote[...]
Erklären kann ich mir das nur so, dass die Filenamen im Verzeichnis der Festplatte eingetragen, die Daten aber wegen eines Fehlers nie geschrieben wurden. Wahrscheinlich sind die Einträge im Verzeichnis der Festplatte gleichfalls Fehlerhaft.
[...]
QuotefileAttributeFormat() = MSDOS/FAT
Quotezip.pl Archiv.zip
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
#!/usr/bin/perl -w ########### zip.pl ################ # Testing for modul Active::zip # Unpack given ZIP files in the same directory use lib './'; use strict; use Carp; use Encode; use Encode::Guess; use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); use utf8; use open ':utf8'; binmode STDOUT,':utf8'; my $zip = Archive::Zip->new(); my @encodings = qw(ascii cp850); my $m = ''; my $n = ''; my $charset = ''; die 'read error: ',$ARGV[0] unless $zip->read( $ARGV[0] ) == AZ_OK; foreach $m ($zip->members()) { print "member filename: ",$m->fileName(),"\n"; print "fileAttributeFormat: ", $m->fileAttributeFormat(),"\n"; $n = $m->fileName(); print "Try to guess encoding\n"; $charset = guess_encoding($n, @encodings); #no charset found unless (ref $charset) { print "No charset found: $charset\n"; print "Using member filename like it is: $n\n"; $zip->extractMember($m); next; } #charset found $charset = $charset->name; print "Guessed charset: ",$charset,"\n"; print "Archive given member filename is $n.\n"; $n = decode($charset,$n); $m->extractToFileNamed($n) ; print "Decoded to $n\n"; print "----------------\n"; } print 'done.';