shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Detectar codificação de texto


From: Robson Alexandre
Subject: Re: [shell-script] Detectar codificação de texto
Date: Fri, 6 Feb 2015 10:07:24 -0200

Tiago,

talvez eu não tenha me expressado direito, mas o que estou tentando buscar é alguma maneira de detectar a codificação de uma string, e não do conteúdo do arquivo como um todo pq meu problema é com os nomes dos arquivos listados em arquivos.txt. Assim no arquivo terei linhas em utf8 e linhas escritas em iso8859. Parte do conteúdo de arquivos.txt está aqui: http://termbin.com/cq15
e a única gambiarra que consegui fazer foi:

  1. tmp=$(mktemp);
  2. while read linha; do
  3. echo "$linha" > $tmp;
  4. encoding=$(cut -d: -f2 <(file -i $tmp));
  5. echo "$linha:$encoding" >> arquivos_codificacao.txt;
  6. done < arquivos.txt

Isso me dá o resultado "STRING: CODIFICAÇÂO".
Digo gambiarra pq tenho q escrever a string em um arquivo temporário para utilizar o file -i.
Deve ter alguma outra forma de descobrir a codificação de um texto.

Atenciosamente
Robson Alexandre

Em 5 de fevereiro de 2015 18:27, Tiago Peczenyj address@hidden [shell-script] <address@hidden> escreveu:
 

digamos que vc só tenha iso e utf8. vc quer converter utf8 para iso:

$ ls
arquivo.iso  arquivo.utf8

$ file -i *
arquivo.iso:  text/plain; charset=iso-8859-1
arquivo.utf8: text/plain; charset=utf-8

$ for i in *; do grep -q iso <<< $(file -i $i) && echo "$i ok" || echo "$i nok"; done
arquivo.iso ok
arquivo.utf8 nok

$ for i in *; do 
   grep -q iso <<< $(file -i $i) || iconv -f utf8 -t iso8859-1 $i > ${i}.FIXED
done

$ ls 
arquivo.iso  arquivo.utf8  arquivo.utf8.FIXED

$ file -i *
arquivo.iso:        text/plain; charset=iso-8859-1
arquivo.utf8:       text/plain; charset=utf-8
arquivo.utf8.FIXED: text/plain; charset=iso-8859-1


2015-02-05 18:11 GMT-02:00 Robson Alexandre address@hidden [shell-script] <address@hidden>:

 

Boa tarde a todos,

estou com uma lista de arquivos gerada pelo find onde alguns arquivos tem sua nomenclatura em ISO8859 e outros em UTF8. Como exemplo as duas linhas correspondentes estão neste arquivo:
Preserva��o de Material de Informatica.pdf
Preservação de Material de Informatica.pdf

Gostaria de saber uma forma de identificar o encoding das strings, ou das linhas do arquivo para saber quais arquivos estão com sua codificação errada.
Tentei o file -i sem sucesso.
Mas se criar um arquivo temporário com a linha, o file -i resulta:

Preserva��o de Material de Informatica.pdf
text/plain; charset=iso-8859-1

E com a linha na codificação correta
Preservação de Material de Informatica.pdf
text/plain; charset=utf-8

Tentei um cat -A nessas linhas que resultaram:
PreservaM-gM-co de Material de Informatica.pdf$
PreservaM-CM-'M-CM-#o de Material de Informatica.pdf$

onde tentei filtrar os caracteres de controle [[:cntrl:]], os não imprimíveis [^[:print:]], mas sem resposta ao filtro.
Se eu uso o 'iconv -f latin1 -t utf8' ele acaba convertendo tudo, inclusive o que já está em UTF8.

Alguém poderia dar alguma dica?


Atenciosamente
Robson Alexandre




--
Tiago B. Peczenyj

http://about.me/peczenyj



reply via email to

[Prev in Thread] Current Thread [Next in Thread]