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.
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));