Problemas com codificação de caracteres [Resolvido]

Boa tarde,

Estou desenvolvendo um Applet que monta uma String de saída, onde uma parte da String é customizada (o próprio aplicativo cria dinamicamente) e a outra parte é padrão (é lida de um arquivo txt armazenado em pacote do meu arquivo jar.

O applet pode ser rodado igual a um Java Swing comum (para testes) ou como applet mesmo (devidamente assinado).

Quando eu testo o programa no SWING, ou seja, rodo em uma janela (JFrame) comum, ele gera a saída corretamente em um JTextArea.

O problema é quando eu rodo o applet mesmo. Nos trechos onde estão partes da String padrões (partes lidas de arquivo txt), ele dá erros de codificação, por exemplo:
Avaliação de Lab. de Comp. â??

O que fazer para resolver o problema? Já salvei o arquivo como UTF-8, Unicode, ISO… tudo que tinha… e sempre que vou rodar no navegador, nos trechos que são do arquivo TXT, ele saí corrompido no JTextArea.

Fala brow,

Sera que nao eh alguma coisa com o navegador?
No Firefox, por exemplo, voce pode ir em Exibir->Codificacao…

Acredito que a correta eh a ISO-8859-1.

Abraco!

Não é… eu testei e dá a mesma coisa.

O arquivo txt que estou lendo é uma procedure do SQL Server. Já salvei o arquivo com codificação UTF-8, Unicode e não funcionou…

Descobri o problema. Na hora que eu abria o java.io.InputStreamReader para leitura do arquivo (nos trechos que eu acrescentava ao String partes de arquivo txt salvo), ele provavelmente convertia a codificação original do texto para Unicode ou outra (não sei ao certo).

Adotei como solução fornecer a codificação do arquivo que quero ler (por meio de um objeto Charset:


/*
No trecho abaixo, chamo o construtor da classe InputStreamReader, passando um objeto Charset como argumento:
Constructor InputStreamReader(InputStream in, Charset cs)
          Create an InputStreamReader that uses the given charset.
*/

Charset cs = Charset.forName("UTF-8");  // a codificação do texto é UTF8
BufferedReader buffer = new BufferedReader(new InputStreamReader(inputStream, cs));   
1 curtida