[RESOLVIDO] Leitura de caracteres especiais

Pessoal,

To lendo um arquivo txt usando

Até aí tudo bem, ja fiz muito isso.

Mas esse arquivo tem textos com caracteres especiais, letras acentuadas.

e o estranho que quando elas são lidas na string, todas elas, vem com o valor ‘\ufffd’ (int 65533).

Ou seja, todas as letras acentuadas, mesmo diferentes entre si, vem com o mesmo valor.

Como faço para realmente ter o caractere que está no texto.

Já li todos os tópicos que envolviam caracteres especiais mas não encontrei nada que me atendesse.

Como faço para identificar o tipo de codificação usada num arquivo TXT???

Se alguem tiver uma idéia de como resolver isso, desde já agradeço.

Isso acontece por causa da codificação, como você falou. Você precisa mudar a codificação na hora de criar a String, de forma que consiga pegar os acentos. Pra isso, use a ISO-8859-1.

Por exemplo:

String linha;
while ((linha = new String(br.readLine().getBytes(), "ISO-8859-1")) != null) {
	System.out.println(linha);
}

Isso aí provavelmente vai resolver seu problema.

Na próxima vez, coloque seu código entre as tags code. Pra entender como fazer isso, leia este tópico.

Tentei a sua sugestão de usar o charSetName.

Aliás tentei todos que encontrei e nenhum deles funcionou.

Em alguns deles nem faz a conversão, em outros faz mas os caracteres ficam esquisitos tbm.

Mais alguma sugestão?

Ué. Coloquei uns acentos aqui e leu tranquilamente. Você pode postar umas 2, 3 linhas desse seu arquivo?

Resolvido.

Era quase o que você sugeriu, só que ao invés de colocar no readLine(), tinha que colocar o charSetName no InputStreamReader

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(arq.getPath()), "ISO-8859-1")); 

while ((sLinha = br.readLine()) != null) {

Que estranho. Fiquei sem entender essa :expressionless:
De qualquer forma, o importante é que foi resolvido.

Se possível, edite o título do seu tópico e coloque um [Resolvido].

Obrigado João.

Resolveu o meu problema tambem