Uživatelské nástroje

Nástroje pro tento web


diakritika_v_zip_archivech

Diakritika v ZIP archivech

Popis problému

Formát ZIP má jednu zásadní nevýhodu - původně nikdo nepočítal s tím, že by se v něm někam ukládala informace, v jakém kódování jsou názvy souborů. Pokud jsou názvy těchto souborů jen v ASCII (rozuměj: bez diakritiky), obvykle žádný problém nenastane. Problém ale je, když v názvech souborů jsou obsažené znaky například s českou diakritikou (ščř…). A abych byl ještě přesnější - když je takový archiv vytvořen na Windows a následně se snažíte z něj soubory dostat třeba na Linuxu.

Na Linuxu existuje několik nástrojů pro práci s archivy ve formátu ZIP. Asi nejrozšířenějším je program unzip. Ten by sice v poslední verzi (6.0) měl již podporovat kódování UTF-8, ale neřeší to problém ZIP archivů vytvořených pod Windows nějakým jiným nástrojem. V nich jsou obvykle názvy souborů v kódování CP852. Jenže informace o tom, že jsou zrovna v tomto kódování, není v samotném archivu nikde uložena.

Řešení

Nejprve je třeba archiv nějakým způsobem rozbalit. Na toto se osvědčil program 7zip. Pozor ale na nastavení locale, zdá se, že pokud je nastavené na češtinu, při rozbalení 7zip s názvy souborů ještě něco provádí. Tomu se dá zabránit tak, že se spustí bez nastaveného locale:

LANG="C" 7z x nazev_archivu.zip

Pak už stačí jen na všechny rozbalené soubory spustit program convmv pro převod z kódování CP852 do UTF-8:

convmv --notest -r -f cp852 -t utf8 *
diakritika_v_zip_archivech.txt · Poslední úprava: 2013/03/21 09:49 autor: mat