Skript na rozbalení .zip v blbém kódování


Honza Javorek

Upozornění! Tento článek vyšel před více než 2 lety. Můžete si jej přečíst v rámci zkoumání minulosti, ale přepokládejte, že dnes se Honza již nemusí s obsahem ztotožňovat.

.zip je dost primitivní formát a pokud v něm zabalíme složky a soubory s diakritikou na Windows a budeme rozbalovat jinde (kdekoliv, kde nebude kódování windows-1250), tak si na tom grafický rozbalovač vyláme zuby a unzip z terminálu rozbalí vše, ale s podivnými znaky (takže se soubory nejde nic dělat, musí se nejdříve přejmenovat). Podobný problém bude asi fungovat i opačným směrem – pokud já zabalím něco v Linuxu do .zip, pravděpodobně se to podobně rozbije ve Windows.

Už dlouhou dobu (i na Windows) mám nejraději 7zip, asi nejlepší program na archivy vůbec. Má vlastní formát .7z, který je hodně parametrizovatelný a má skvělou kompresi. Rozbalí i zabalí .zip, .rar a spoustu jiných dalších typů archivů. Navíc je zadarmo a je na všechny platformy. Když můžu, používám ho místo .zip a nemám žádné problémy.

Pokud ale nějaký .zip přijde, nedá se nic dělat. Napsal jsem skript, který problém řeší:

#!/bin/bash
dirname=`echo "$1" | sed -e 's/\(.\+\)\.zip/\1/'`
unzip $1 convmv -f cp1250 -t utf8 -r $dirname --notest

Pokud jej uložíme jako třeba unzip-win, rozbalíme archiv jako ./unzip-win bidny-kojot.zip. Přeji bezproblémové rozbalování :) .


Honza Javorek

Honza je programátor. Od roku 2011 buduje českou komunitu kolem jazyka Python. V současnosti pomáhá hlavně s propagací aktivit, jako jsou PyLadies, Pyvo, nebo PyCon CZ. Přes den jej najdete v Apiary, kde se stará o Dredd, framework na testování API. Sem tam ho můžete potkat, jak přednáší na srazu nebo na konferenci.




Komentáře