My conclusions from PKWARE Application Note: 1. Encoding must be OEM code page of terminal where zip will be viewed or unpacked; 2. "version made by" field must be set in accordance with OS where zip will be viewed or unpacked; 3. If filenames encoded in UTF-8 (Linux terminal code page), general purpose bit 11 for UTF-8 must be set for crossplatform compatibility. Last versions of some windows archivers supports it.
I have no idea yet what command line options and defaults must be and how integrate it with CGI. But with hardcoded charset and "version made by" BackupPC_zipCreate works perfectly well with most windows archivers. BackupPC_zipCreate: 8<-------------------------- #=> Set OEM code page for unpacking terminal my $Charset = "cp866"; #Cyrillic code page. Change to yours windows terminal code page. 8<-------------------------- # Specify the compression level for this member $zipmember->desiredCompressionLevel($compLevel) if ($compLevel =~ /[0-9]/); #=> Set "version made by" field to 0 (MS-DOS) $zipmember->fileAttributeFormat('FA_MSDOS'); #=> Set general purpose bit 11 for UTF-8 $zipmember->{bitFlag} = $zipmember->{bitFlag} | 0x0800 if ( $Charset eq "" ); # Finally Zip the member $zipfh->addMember($zipmember); } 8<-------------------------- P.S. Also Appendix D of Application Note on the .ZIP file defines optional "Extra Field" storage for UTF filenames. But no archivers that really supports it. ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ BackupPC-users mailing list BackupPC-users@lists.sourceforge.net List: https://lists.sourceforge.net/lists/listinfo/backuppc-users Wiki: http://backuppc.wiki.sourceforge.net Project: http://backuppc.sourceforge.net/