Gente precisei fazer um processo para ler, alterar e gravar um arquivo XML. Só que quando gravo no Linux as letras com acentos ficam todos com caracteres esquisitos. Isso não acontece no Windows.
Já alterei o código de várias formas e não consegui sucesso.
Para ler o arquivo
FileInputStream reader = null;
reader = new FileInputStream(new File(<caminho_do_arquivo>));
// Já alterei essa linha adicionando new InputStreamReader(reader, Charset.forName("UTF-8"), entre outros charsets
BufferedReader leitor = new BufferedReader(new InputStreamReader(reader));
String linha = null;
while ((linha = leitor.readLine()) != null)
{
conteudo += linha;
}
reader.close();
leitor.close();
Para gravar
String conteudo = obterConteudoArquivoXml();
conteudo = conteudo.substring(0, conteudo.length() - 7);
FileOutputStream fos = new FileOutputStream(obterCaminhoENomeDoArquivoXml());
OutputStream bout = new BufferedOutputStream(fos);
//aqui também já alterei de várias formas com vários tipos de charsets
OutputStreamWriter out = new OutputStreamWriter(bout, Charset.forName("UTF-8"));
out.write(conteudo + conteudoParaGravar + "</root>");
out.flush();
out.close();
fos.close();
Isso só acontece quando gravo no Linux, no Windows funciona normal, sem precisar setar charsets. Alguém tem alguma dica?