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