Čas od času řeším problém jak hromadně zkonvertovat sadu souborů z kódování A do kódování B, popřípadě jak ze sady souboru odstranit UTF-8 BOM. Vždy jsem na hledání nějakého jednorázového vehementu strávil plno času, především proto, že to obvykle nefungovalo tak úplně jak bych potřeboval. Na odstranění BOMu, jsem navíc nenašel vůbec nic. Nakonec mi došla trpělivost a za 20 minut jsem si spíchnul utilitku, kterou jsem si problém jednou provždy (doufám) vyřešil. A pak že je Java na takovéhle utilitky nešikovná (vím že v Groovy bych to měl na polovině řádku, ale ještě nejsem úplně Groovy ready) …
Utilitka je směšně jednoduchá – před použitím zatřepat a na příkazový řádek napsat:
java -jar convertor-1.0.0.jar -m convert -i utf-8 -o windows-1250 -s /www/vstupni -t /tmp/vystupni -e java,txt,properties,xml
Tímhle příkazem zkonvertujete všechny soubory s příponami java, txt, properties, xml z adresáře /www/vstupni z kódování UTF-8 do kódování windows-1250 a výsledek se uloží do složky /tmp/vystupni. Pro odstranění BOM stačí -m convert zaměnit za -m removeBOM.
Nehledejte v utilitce žádnou inženýrský přístup – jde jen o jednorázovku, která má plnit jednoduchý účel. Třeba se vám ale bude taky hodit …
Convertor [JAR 150kB] ke stažení
Zdrovové soubory [ZIP 4kB] ke stažení
Application for batch file encoding and UTF-8 BOM removal
Many times I had a need for batch file encoding conversion or UTF-8 BOM removal. I repeatedly searched for utility appliacations that would do this for me, but usually lost a lot of time trying them and finally uninstall them dissapointed. The problem is so dumb simple, that I couldn’t resist and wrote my own in 20 minutes, doing the right thing I need. Feel free to use it or extend it, if you want.
Usage is simple – you would need Java 1.5 installed:
java -jar convertor-1.0.0.jar -m convert -i utf-8 -o windows-1250 -s /www/input-t /tmp/output-e java,txt,properties,xml
Thic command will convert all files with extension of java, txt, properties and xml from input directory /www/input into output directory /tmp/output from encoding utf-8 into windows-1250. If you need to batch remove UTF-8 BOM, just change the mode to -m removeBOM.



Zpětný odkaz: Myšlenky dne otce Fura » Blog Archive » Groovy namísto shell skriptů
Zpětný odkaz: Myšlenky dne otce Fura » Blog Archive » How to add your own dictionary to IntelliJ Idea Spellchecker
Nevim jak s BOM, ale na prevod kodovani se mi osvedcil iconv. Lze i na windows (pouzivam cygwin). Trivialni priklad::
myconv.sh:
#!/bin/bash
mv $1 %1.tmp
iconv -f UTF-8 -t CP1250 $1.tmp > $1
rm $1.tmp
nasledne se zavola na potrebne soubory napr. pres find:
find ./ -type f – name „*.java“ -o – name „*.txt“ -exec myconv.sh \{\} \;
Ak už má človek nainštalovanú javu, tak má aj nástroj native2ascii. S ním je možné spraviť konverziu bez inštalácie akýchkoľvek knižníc tretích strán. Ja som používal tento BAT
1 rem Windows-1250 to UTF-8.
2 copy „%1″ „%1.1250″
3 %JAVA_HOME%\bin\native2ascii.exe -J-Xmx64M -encoding windows-1250 „%1.1250″ | %JAVA_HOME%\bin\native2ascii.exe -reverse -encoding UTF-8 > „%1″
4 del „%1.1250″
Riadok 2 urobil pracovnú kópiu súboru ktorý chcem konvertovať.
Riadok 3 urobí dve konverzie – z pôvodného formátu do java-encoding a z neho do požadovaného formátu, ktorý prepíše pôvodný súbor.
Riadok 4 vymaže pracovnú verziu (v java-encoding formáte).
Tento baťák stačí obaliť baťákom, ktorý tam láduje súbory z nejakých adresárov a to je všetko.
Chybička se vloudila, odkazy opraveny, nyní možno stáhnout.
Ahoj, pro inspiraci jsem si chtěl stáhnout zdrojáky, ale bohužel nemám na to právo:-(
You don’t have permission to access /EncodingConvertor/ on this server.
Tak ten vypadá rozhodně líp než většina co jsem zkoušel. No internet je holt moře, a tak se v něm dá lehce utopit.
na windows se mi osvědčilo tohle http://www.sisulizer.com/kaboom/index.shtml