čtvrtek 25. února 2010

Jak na hromadnou změnu kódování pomocí Iconv

Už kolikrát se mi stalo, že jsem potřeboval jednoduše, ale hlavně rychle změnit kódování u většího množství souborů. To se dosti často stává, když chce někdo předělat webové stránky z roku raz dva, dělané na koleně a nejlépe ještě vygenerované pomocí nějakého pochybného programu jako je třeba word :).

Vzhledem k tomu, že po téhle náhlé potřebě většinou vytvořený skriptík ihned zapomenu, nebo ztratím, rozhodl jsem se si do budoucna usnadnit práci a vystavit ho zde. Samozřejmě ne pouze pro svou potřebu:). Tak tady to je.

for i in $( find . -name "*.htm"); do iconv -f WINDOWS-1250 \ -t UTF-8 $i > ${i}_temp; mv ${i}_temp $i ;done

V jednoduchosti je síla a tohle opravdu ve většině případů postačí. V aktuálním adresáři se vyhledají soubory s příponou htm a na nich se provede příkaz iconv, který změní jejich kódování z obludného WINDOWS-1250 na něco normálního. V tomhle případě UTF-8. A protože iconv vypisuje překódovaný soubor na standardní výstup je třeba si jej uložit do souboru. V tohle případě bude mít soubor příponu rozšířenou o _temp. A v poslední se nahradí původní soubor nově vytvořeným a máme hotovo.

Samozřejmě se předpokládá známé kódování souboru. V opačném případě poslouží program enca, který lehce odhalí v jakém kódování je ten který textový soubor.

Žádné komentáře:

Okomentovat