[RESOLVIDO] Problemas com acentuação - XML

Bom dia! Estou trabalhando num projeto aqui na empresa e faço a leitura de um XML que está em UTF-8.

<?xml version="1.0" encoding="UTF-8" ?>

Faço a leitura da seguinte maneira:

[code] public void lerArquivo() {
try {
XStream xs = new XStream(new DomDriver(“UTF-8”));
xs.registerConverter(new PrevisaoConverter());
xs.processAnnotations(Previsao.class);

        BufferedReader input = new BufferedReader(new FileReader("previsao_climatempo.xml"));
        Previsao p = (Previsao) xs.fromXML(input);
        
        for(int i = 0; i < p.getCidades().size(); i++)
        {
            add((Cidade) p.getCidades().get(i));                
        }
        
    } catch (FileNotFoundException ex) {
        Logger.getLogger(CidadeTest.class.getName()).log(Level.SEVERE, null, ex);
    }
}[/code]

O problema está nos caracteres especiais que ficam todos desconfigurados.
Procurei uma solução e não encontro. Poderiam me ajudar?

Obrigado!

debugando o seu código, o valor já é passado errado na leitura ou apenas na hora da exibição dos valor?

Analisei o debug aqui e pela IDE a leitura está correta. Quando dou o print está correto também. Porém, quando executo o .jar fora da IDE eu procuro por “São Paulo” nao retorna nenhum resultado. Quando procuro por “São Paulo” eu tenho o resultado esperado.

Busca:

public Cidade buscaCidade(String text) { Cidade c = new Cidade(); for (int i = 0; i < this.cidades.size(); i++) { c = (Cidade) this.cidades.get(i); // System.out.println(text +" == "+c.getNome() ); if (text.equalsIgnoreCase(c.getNome())) { break; } else { c = new Cidade(); } } return c; }

O problema esta na JVM, que não é por padrão no windows 7 com o encoding em UTF-8 (devido ao meu local Brasil). Então criei a variável de ambiente: JAVA_TOOL_OPTIONS e o valor dela: -Dfile.encoding=UTF8
Dessa maneira FUNCIONA fora da IDE.

Há alguma maneira de fazer com que a leitura do XML seja feita em UTF-8 fora da IDE sem precisar mudar as variaveis de ambiente?

Leitura do XML:

    public void lerArquivo() {  
           try {  
               XStream xs = new XStream(new DomDriver("UTF-8"));  
               xs.registerConverter(new PrevisaoConverter());  
               xs.processAnnotations(Previsao.class);  
      
               BufferedReader input = new BufferedReader(new FileReader("previsao_climatempo.xml"));  
               Previsao p = (Previsao) xs.fromXML(input);  
                 
               for(int i = 0; i < p.getCidades().size(); i++)  
               {  
                   Cidade c = (Cidade) p.getCidades().get(i);  
                   c.setNome(ImpressaoGeneric.cleanString(c.getNome()));  
                   add(c);                  
               }  
                 
           } catch (FileNotFoundException ex) {  
               Logger.getLogger(CidadeTest.class.getName()).log(Level.SEVERE, null, ex);  
           }  
       }  
           BufferedReader input = new BufferedReader(new InputStreamReader (new FileInputStream ("previsao_climatempo.xml"), "UTF-8")));

[quote=entanglement] BufferedReader input = new BufferedReader(new InputStreamReader (new FileInputStream ("previsao_climatempo.xml"), "UTF-8"))); [/quote]

Funcionou perfeitamente :smiley: :smiley: :smiley:

MUITÍSSIMO OBRIGADO :smiley: