2012. március 19., hétfő

Ékezetes fájlnevet tartalmazó ZIP-archívum kitömörítése Ubuntun

Panaszkodott az egyik kollégám, hogy az ilyen-meg-ilyen hivatalos honlapról letöltött ZIP-archívumot nem tudja kitömöríteni az iskolában lévő Ubuntu 10.04 LTS rendszeren. Kis keresgélés után kiderül, hogy hosszú évek óta rengetegen szenvednek hasonló gonddal: A Windows-ok ugye a mai napig hadilábon állnak az UTF8-cal, és a ZIP formátum pedig - ahogy olvasom - nem tudja a fájlnév kódolását tárolni.
Az Ubuntu 10.04-ben lévő file-roller (az az alkalmazás, ami az archívumok grafikus kezelését végzi) egy ízes magyar ékezetes fájlnévtől összerosálja magát.
Azon a gépen, ahol a blogot írom, Ubuntu 11.10 van - itt a helyzet egy fokkal jobb. Lássuk a reprodukciót.

Az ember fog egy Windows-t (mindegy, hogy XP vagy 7), és létrehoz egy ZIP-archívumot:
Belenézünk. A fájlnevek szépen olvashatók:

Ezt az archívumot megnyitjuk Ubuntu alatt. A fájlnév gyanús:
A kibontásra kattintva a 10.04 LTS hibát jelez, és nem férünk hozzá az adatunkhoz. A 11.10 kibontja a fájlt, és megnyitható - azaz legalább az adat megvan -, de a fájlnévben több a cirill betű, mint amikor betömörítettük:)
A megoldást - két tanóra között - ismét internetes kutakodással kezdtem, és egy távol-keleti ember blogjából tudtam meg, hogy az unzip-nek - ami ugyebár a kitömörítést végzi - átadható egy opció, amelyben meghatározható a kódlap.
Az ő parancsora valahogy így nézett ki: unzip -O cp945 fájl.zip (a 945 nem biztos - de most nem is lényeges). Na jó, akkor próbálkozzunk: mit ír a magyar honpolgár a cp után? Windows1250? Nem. WINDOWS1250? Nem. windows1250? Nem. ISO8859-2? ISO88592? iso8859-2? iso88592? Latin-2? Lat-2? Ugyanezek kisbetűvel és/vagy kötőjel nélkül? Nem, nem és nem. Csöngettek és mentem órát tartani, és mire visszajöttem, Balázs kollégám vigyorgott, és okos lett. A megoldás:
raerek@kipkopp:~/Asztal$ unzip -O cp852 teszt.zip 
Archive:  teszt.zip
 extracting: ekezet_nelkuli_fajlnev.txt  
 extracting: Gy??m??lcsv??d?? ??gy??f??ny??r??.txt  
raerek@kipkopp:~/Asztal$ ls Gy*
Gyümölcsvédő ágyúfűnyíró.txt  GyБmФlcsvВdЛ аgyгf√nyбrв.txt

Ahogy látod, az unzip kimenete még hibás, de a fájlnév végső soron helyesen íródik le. Most már csak az a kérdés, hogy miként mondható el a file-rollernek, hogy ezt az opciót adja át az unzip-nek?

3 megjegyzés:

Sempai írta...

Sztem zippelés előtt érdemes átalakítani a fájlok neveit, így ni!

Ez a chapta valami agyrém vazze.

raerek írta...

Na ja, ez igaz, de ezt a magyar kormányzati/költségvetési szervek nem tudják.

csaba írta...

Kössz, működik arch linuxon is AUR-ból feltett unzip-beta 6.10b-1 -gyel. A listában is jól jeleníti meg a fájlneveket.