User avatar by pello in January 1, 1970, 1:00 am   tags: ,
Puede que alguna vez hayas tenido que pasar datos de un fichero en algún formato extraño a una BD u otro tipo de repositorio. En el proceso de exportación/importación de los datos puede haber problemas con los juegos de caracteres ya que en aplicaciones del mundo antiguo (vease DOS etc) en lenguajes tenebrosos (COBOL, Pascal, etc...) vete a saber los juegos de caracteres que se usaban. A veces tendrás que sacar los datos de un fichero en formato DBF, cosa fácil usando un script propio o uno más profesional como dbf_dump. Una vez tienes el fichero puedes echar un ojo (a ojo) si te salen las tildes y las Ñs, o bien puedes echar mano del comando file. Puede que los caracteres salgan mal y file diga esto: linux$ file -i fichero.csv fichero.csv: text/plain charset=unknown linux$ Ups! Vale, qué no punda el canico. Sabemos que disponemos del comando iconv para hacer la conversión de caracteres. El formato es así: linux$ iconv --from=JUEGO_DE_CARACTERES_ORIGEN --to=JUEGO DE CARACTERES_DESTINO fichero.csv > resultado.csv Pero estamos en las mismas. Sabemos lo que queremos, tenemos la herramienta, pero no conocemos el JUEGO_DE_CARACTERES_ORIGEN. Bueno, la informática permite hacer el burro y probar los 1000y poco juegos disponibles con iconv y un simple bucle.Y uno, como es muy bruto y a veces no se tiene tiempo de investigar más y de documentarse sobre los juegos de caracteres de DOS y tal pues nada, todos al bucle y a ver cuál funciona. Primero necesitamos la lista de juego de caracteres: linux$ for i in `iconv -l`; do echo $i; done > juegos.txt Con eso generamos la lista, quizá haya que editarla y reemplazar caracteres \\, vale, no me apetece buscar la orden sed, no me la "sed" de memoria (festivaaaal del humooor). Y ahora vamos a lo bruto. En un bucle for sacamos las 10 primeras líneas del fichero misterioso y vamos probando cada uno de los juegos de caracteres, guardando el resultado en un fichero con el nombre modificado: linux$ for i in `cat juegos.txt` do echo -n Convirtiendo ${i} head fichero.csv | iconv --from=$i --to=UTF-8 > fichero.${i}.csv echo done done linux$ Echamos un ojo a los resultados, con un GREP que busque una línea concreta eta kitto!! Puede que el juego sea un 850 o similar.
5 comments |  PELMAlink |  7084 reads
0 of 0
make a comment
Comments
#1 eiillooo user avatar says:
qee ice illo si yo soy de los cortioosss
+-0 of 0
in May 12, 2010, 12:25 pm
#2 CHDWmuslA user avatar says:
www.insurguideonline.com/ health insurance plans =]] www.myinsurersguide.com/ life insurance 9065 www.bestallinsurers.com/ state auto insurance ymmlbs www.insurlist.net/ car insurance rates 8O
+-0 of 0
in May 12, 2011, 4:45 am
#3 cAsZdmueJzCgBeOCn user avatar says:
www.insurpartners.com/ life insurance %-((( www.getcarinsur.com/ car insurence vzwt www.insursmarket.com/ standard life insurance 3509
+-0 of 0
in May 14, 2011, 1:09 pm
#4 UWlVhRznspPRwzGUU user avatar says:
www.insurpartners.com/ life insurance 3671 www.insursmarket.com/ life insurance company 61632 www.shannondawnphotography.com/cheap_auto_insurance.html classic car insurance 8-]
+-0 of 0
in May 15, 2011, 6:15 pm
#5 viagra online user avatar says:
vlxsahn cheapqviagra.net/ viagra online >:-[ cheapqviagra.com/ viagra 6733 cheapqcialis.net/ cheap cialis 8632 cheapqcialis.com/ cialis QqOzL
+-0 of 0
in February 2, 2012, 12:42 am
Show all fields