Segunda-feira, 5 Novembro 2007

Conversão de charset para UTF-8

Em ambientes de desenvolvimento heterogêneos, onde existem diferentes sistemas operacionais e IDEs, é comum encontrar problemas de caracteres com encoding diferentes, como ISO-8859-1, UTF-8, etc.

No projeto que trabalho atualmente, existem windows e linux (por enquanto não tem apple), então é comum existirem arquivos com ISO-8859-1, ASCII e UTF-8.

Então não é uma boa idéia gravar arquivos .java, vogais com acentos e gravar em ISO-8859-1 e outro colega abrir esse arquivo em seu linux com UTF-8, uma bagunça.

Então segue um script para linux que verifica os encodings dos arquivos e outro que converte para UTF-8. Note que o script não mostra o arquivo se ele já estiver em UTF-8.

É necessário o utilitário konwert. Já usei anteriormente o recode e iconv, mas achei o konwert mais prático. E ele oferece uma opção interessante, onde ele tenta descobrir qual o encodingo do arquivo, através da opção any/pt/all-test

Script 1 - checagem do encoding

#!/bin/sh

if [ $# -lt 1 ] ; then
    echo ""
    echo " Informe um diretório para pesquisar os arquivos .java "
    exit 1
fi

find $1 -name \*.java -exec file {} \; | egrep -v 'ASCII|UTF' | while read s; do 
	ff=`echo $s | awk -F ':' '{print $1}'`;  
	file $ff; 
	echo " charset   "; konwert any/pt/all-test  $ff; 
done

Script 2 - Conversão para UTF-8

#!/bin/sh

if [ $# -lt 1 ] ; then
    echo ""
    echo " Informe um diretório para converter os arquivos .java para UTF-8"
    exit 1
fi

find . -name \*.java -exec file {} \; | grep 8859 | while read s; do 
	ff=`echo $s | awk -F ':' '{print $1}'`;   
	konwert cp1252-utf8 -O  $ff; 
done                      

No script de conversão é usado a opção -O, que faz com que o arquivo original seja trocado pelo arquivo com encoding UTF-8 

Escrito por claudio at 1:46 PM categorizado por Dicas e Scripts

Tags: linux dicas java

 

[Trackback URL desta mensagem]

Comentário: Luiz C. F. dos Santos at Seg, 5 Nov 4:42 PM

putz cara, legal, mas sou novo no linux baixei o konwer-1.0.3.tgz, mas num consegui instalar, vi o readme mas tá em Ruso ou pelo menos parece russo!!! ehehehehe. Tem um makefie junto, mas como eu disso sou novo no linux, num sei como usar pra instar, será que vc poderia me dar uma mão?

Comentário: Claudio Miranda at Ter, 6 Nov 1:35 AM

Provavelmente seu linux já permite instalar o arquivo binário sem compilar. Se for um debian/ubuntu, basta invocar o "sudo apt-get install konwert" que faz o download e instala.

Comentário: Luiz C. F. dos Santos at Ter, 6 Nov 12:52 PM

Ola Claudio, entao eu consegui instalar, na verdade no final das contas foi facil, compilei e coloquei o binario no /bin, o apt-get num ia rolar pois sou fedorento..uso fedora ehehehe (eta piadinha sem graca). Modifiquei seu script-1 para ler htm:

find $1 -name \*.htm -exec file {}

mas ta dando essa mensagem:

/alephino/alephino22/trt/htdoc/aliadm_por/AcqGroup.htm: HTML document text
charset
"Konwert"
wersja 1.0.3, 30.01.2005
Copyright (C) 2004, 2005 Krzysztof Kozlowski

Blad: Zly parametr.

o que vc acha que e?

Comentário: Claudio Miranda at Ter, 6 Nov 1:29 PM

Pelo que entendo, as mensagens não estão em inglês, verifique nas opções do ./configure ou ambiente (LC_ALL, LC_CTYPE, etc.), para configurar o ambiente de build para inglês, ou tente arrumar um binário rpm ou ainda, use o alien para converter o .deb para .rpm.

Pingback: Conversão de charset para UTF-8, modo gráfico » Claudio Miranda at Qua, 7 Nov 5:26 PM

Conversão de charset para UTF-8
em windows para linux, o nome de arquivo não é convertido, ficando um nome ilegível. Então deve-se converter o nome do arquivo para UTF-8. Na dica anterior, foi mostrado como modificar o conteúdo do arquivo para UTF-8. O uso da ferramenta konwert

Comentário: Umberto at Qua, 21 Nov 8:00 PM

Valeu cara!!! Foi muito útil ;)

Escreva um comentário:

(not displayed)
 
 
 

Previsão de formatação:

 
 
     Navegue no histórico de mensagens: « First  « Prev   1 2 3 4 5   Next »  Last »