Acentuação da saída de um comando

6 respostas
M

Pessoal,

estou executando um comando externo via Windows com Runtime.getRuntime().exec(comando), porém a saída vem com a acentuação incorreta, substituída por uma seqüências de caracteres malucas. Segue o código que estou usando:

List retorno = new ArrayList();

String s = “”;

Process p = Runtime.getRuntime().exec(comando);

BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream(), 8859_1));

while ((s = stdInput.readLine()) != null) {

retorno.add(s);

}

Se a saída do comando tiver, por exemplo, a palavra “Adaptações”, fica “Adapta?\195?\167?\195?\181es”

Alguém tem alguma dica de como resolver esse problema sem precisar substituir strings?

6 Respostas

Fernando_Generoso_da

não seria:

BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream(), "ISO-8859-1"));

??

Fernando

M

Oi Fernando,

já havia tentado dessa forma, dá o mesmo resultado.

Fernando Generoso da Rosa:
não seria:

BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream(), "ISO-8859-1"));

??

Fernando

M

Um problema que detectei é que a conversão padrão de Java aparentemente só seria possível se tivesse como pegar esses caracteres estranhos como bytes. O problema é que o p.getInputStream() retorna os arrays de bytes já considerando o ? e os outros caracteres como bytes individuais. Ou seja, eu teria que substituir trechos da strings pelos caracteres equivalentes.

Fernando_Generoso_da

Tenta utilizando o BufferedInputStream…

M

Nada…

Acho que essa só vai com substituição de strings mesmo…

lucamartins

Isso depende da configuração da saida de dados. Se vc fizer este teste, por exemplo, no netbeans a String vai sair bunitinha. Não sei como faz, mas acho que deve ter algum parametro para passar para janelinha do DOS e resolver isso.

Criado 18 de março de 2009
Ultima resposta 19 de mar. de 2009
Respostas 6
Participantes 3