Apaxe Posted March 11, 2014 at 09:09 PM Report #548279 Posted March 11, 2014 at 09:09 PM Olá a todos! Não consigo resolver o problema da codificação dos carateres acentuados e com cedilha que retornam da execução de comandos do Windows!! Segue um exemplo de uma Classe que fiz para capturar o retorno de um comando do Windows: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Exemplo_2 { public static void main(String[] args) throws IOException { String comando = "cmd /C vol"; try { Process exec = Runtime.getRuntime().exec(comando); String linha; BufferedReader buf = new BufferedReader(new InputStreamReader(exec.getInputStream(), "ISO-8859-1")); while ((linha = buf.readLine()) != null) { System.out.println(linha); } } catch (Exception ex) { System.err.println("Erro: " + ex.getMessage()); } } } Alguém consegue ajudar-me resolver o problema da codificação de carateres? Obrigados
HappyHippyHippo Posted March 11, 2014 at 09:46 PM Report #548287 Posted March 11, 2014 at 09:46 PM hum ... o enconding convencional da consola do windows é CP-1252, no entanto podes experimentar se o UTF-8 come isso ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Apaxe Posted March 11, 2014 at 10:47 PM Author Report #548293 Posted March 11, 2014 at 10:47 PM hum ... o enconding convencional da consola do windows é CP-1252, no entanto podes experimentar se o UTF-8 come isso ... HappyHippyHippo, obrigado pela resposta. O UTF-8, também já tinha experimentado e também não consegue resolver... :-(
Ernest Posted March 12, 2014 at 04:42 AM Report #548329 Posted March 12, 2014 at 04:42 AM (edited) Bom dia, Introdução e alguns truques. Na verdade executar aplicação externa a partir do sistema Java não é simples. Sem entrar em detalhes : Runtime.exec () não é um shell... Para evitar impasses, os diferentes fluxos (InputStream , ErrorStream) deve ser tratado a partir de diferentes Threads. Desde Java 5, temos à nossa disposição a classe ProcessBuilder que permite entre outros, fundir o fluxo de saída e processo de erro. Desde Java 6, a classe Desktop foi integrado no API padrão que permite abrir um arquivo em particular com a aplicação associada a ele pelo sistema. Resposta ao problema da codificação dos carateres no Windows : A codificação é um problema do Windows usando duas codificações diferentes, dependendo do tipo de aplicação. De acordo com o sistema europeu é, em geral o windows-1252 ( iso-latin1 alterado) e CP850 (usado por aplicativos de console). O problema é que a codificação padrão é windows-1252, e aplicativos de console usa o CP850. De repente, os dados não são lidos com a codificação adequada e encontramos algumas coisas estranhas sobre acentos, etc... Temos, pois, fazer uso desta codificação para ler o fluxo do processo Depende do sistema, o melhor é testar com CP850 et depois com CP1252. No meu caso ele funciona com CP1252 : BufferedReader buf = new BufferedReader(new InputStreamReader(exec.getInputStream(), "CP1252")); Cordialmente Edited March 12, 2014 at 05:31 AM by Ernest Duarte 1 Report
Apaxe Posted March 12, 2014 at 10:57 AM Author Report #548366 Posted March 12, 2014 at 10:57 AM Ernest Duarte, muito obrigado pela introdução que fez pois foi muito esclarecedora. Então, o truque para resolver o meu caso foi utilizar a codificação "CP850". A codificação "CP1252" no meu caso não funciona. Mais uma vez, muito obrigado.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now