[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Распаковывать ZIP с русскими именами



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Mikhail Ramendik пишет:
> Всем привет!
> 
> Устаовлен etch, локаль koi8-r. Супруга качает zip-ы, внутри которых
> файлы с русскими именами, запакованные в виндах (вероятно CP1251? или
> UTF8?). И ей нужно файлы распаковывать, причём желательно в GUI. И
> получать те же русские имена
> 
> Вопрос - как бы это сделать?
> 
> -- 
> Yours, Mikhail Ramendik

Помниться там для русского языка двойная перекодировка нужна. Мне
помогает такой скрипт:


#!/usr/bin/perl

foreach $z (@ARGV) {
    $d = substr($z, 0, -4);
    $zt = `unzip -d $d $z`;
    @files = ($zt =~ /(?<=inflating: ).*?(?=\s*$)/mg);
    &decode_names(@files)
}
exit;
sub decode_names {
    foreach $i (@_) {
        $new_name =
          `echo -n $i | iconv -f cp1252 -t cp850 | iconv -f cp866`;
        ($i eq $new_name) || rename($i, $new_name);
        print "\textracted: $new_name\n";
    }
}

- --
Andrey Tataranovich

public key: 0x2EE7EF82
key server: x-hkp://pgpkeys.pca.dfn.de
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAki/c4cACgkQ/icmBC7n74IuegCglAGR1wFaJnHgj7DNGCYqOzZ4
yHQAn25k2FAOIAMYrKo+Neb6X4hRXmcF
=WAz5
-----END PGP SIGNATURE-----


Reply to: