Problema ao extrair UTF-8 de arquivo texto
Olá,
Estou tendo o seguinte problema: lendo arquivos texto (recebidos de uma fonte externa) e percebendo caracteres estranhos no mesmo, parti para a conversão em UTF-8, assim:
Porém, ainda acontecem problemas com os caracteres Á, Í e À (o texto é todo maiúsculo), eles se tornam algo como "??".
Como posso resolver esse problema?
Estou tendo o seguinte problema: lendo arquivos texto (recebidos de uma fonte externa) e percebendo caracteres estranhos no mesmo, parti para a conversão em UTF-8, assim:
linha = new String(linha.getBytes(), "UTF-8");
Porém, ainda acontecem problemas com os caracteres Á, Í e À (o texto é todo maiúsculo), eles se tornam algo como "??".
Como posso resolver esse problema?
Fabio Zimmermann
Curtidas 0
Respostas
Marcelo Senaga
14/06/2013
Poste o código inteiro. E tente usar ISO_8859_1.
GOSTEI 0
Fabio Zimmermann
14/06/2013
Olá,
Não dá para mandar o código inteiro, ele é dividido em várias classes. Mas, posso apontar o seguinte:
- Uma classe local que estende LineNumberReader (java.io - estende BufferedReader) faz a leitura dos arquivos, por meio do método readLine() - isso faz parte de uma estrutura já pronta qdo comecei aqui onde estou;
- Até alguns dias atrás, esses arquivos eram sempre recebidos em ANSI e não havia problema algum. Porém, alguns arquivos, todos de uma fonte específica, começaram a vir em formato UTF-8 - e mesmo convertendo para UTF-8 na mão nesses casos, como no código do post inicial, ainda aparecem problemas com aquelas letras acentuadas. Então me informei e vi algo sobre arquivos "with BOM", "without BOM", mas no Java não ocorre essa diferenciação, é UTF-8 e pronto;
- Esses arquivos a ler vêm de fontes/lugares sobre os quais não tenho controle direto. Eles foram informados disso, mas a resposta não sei qdo virá;
- Portanto, gostaria de saber como posso fazer, se esses arquivos virem com o texto dessa maneira sempre e não tiver jeito.
Não dá para mandar o código inteiro, ele é dividido em várias classes. Mas, posso apontar o seguinte:
- Uma classe local que estende LineNumberReader (java.io - estende BufferedReader) faz a leitura dos arquivos, por meio do método readLine() - isso faz parte de uma estrutura já pronta qdo comecei aqui onde estou;
- Até alguns dias atrás, esses arquivos eram sempre recebidos em ANSI e não havia problema algum. Porém, alguns arquivos, todos de uma fonte específica, começaram a vir em formato UTF-8 - e mesmo convertendo para UTF-8 na mão nesses casos, como no código do post inicial, ainda aparecem problemas com aquelas letras acentuadas. Então me informei e vi algo sobre arquivos "with BOM", "without BOM", mas no Java não ocorre essa diferenciação, é UTF-8 e pronto;
- Esses arquivos a ler vêm de fontes/lugares sobre os quais não tenho controle direto. Eles foram informados disso, mas a resposta não sei qdo virá;
- Portanto, gostaria de saber como posso fazer, se esses arquivos virem com o texto dessa maneira sempre e não tiver jeito.
GOSTEI 0
Marcelo Senaga
14/06/2013
Veja se isso ajuda:
http://stackoverflow.com/questions/9281629/read-special-characters-in-java-with-bufferedreader
http://stackoverflow.com/questions/9281629/read-special-characters-in-java-with-bufferedreader
GOSTEI 0