Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Problemas con la codificación JAVA (UTF-8......)

Hola Amigos, tengo problemas con la codificación de Java y Windows, resulta que ejecuto un comando CMD de Windows, y lo muestro en un txtArea de Java, pero no sale los acentos (problema de codificación), cualquier solución me servira, gracias,

Codigo Java:
/////////////////////////////////////////////////////////////////////////////////////
Runtime cmd = Runtime.getRuntime();
Process proceso;
try {
proceso = cmd.exec("netsh wlan show hostednetwork");
BufferedReader read = new BufferedReader (new InputStreamReader(proceso.getInputStream()));
txtSalida.setText("");
String linea;
while((linea = read.readLine())!=null){
txtSalida.append(linea+"\n");
}
} catch (IOException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
///////////////////////////////////////////////////////////////////////////////////////////
Resultado al ejecutar este código:
/////////////////////////////////////////////////////////////////////////////////////////

Configuraci�n de red hospedada
------------------------------
Modo: permitido
Nombre de SSID : "WIFI-GRATIS"
N� m�ximo de clientes : 100
Autenticaci�n : WPA2-Personal
Cifrado : CCMP

Estado de la red hospedada
--------------------------
Estado : Iniciado
BSSID : e0:ca:94:1b:38:cf
Tipo de radio : 802.11n
Canal : 10
N�mero de clientes : 0

julio 24, 2015 | Registered Commenterksistemas6k

Prueba así:


public static void main(String args[]) {
Runtime cmd = Runtime.getRuntime();
Process proceso;
try {
proceso = cmd.exec("netsh wlan show hostednetwork");
BufferedReader read = new BufferedReader(new InputStreamReader(proceso.getInputStream(),"Cp850"));
txtSalida.setText("");
String linea;
while ((linea = read.readLine()) != null) {
txtSalida.append(linea+"\n");

}
} catch (IOException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
}

}

Si te fijas en la linea....

BufferedReader read = new BufferedReader(new InputStreamReader(proceso.getInputStream(),"Cp850"));

Le he añadido un nuevo parámetro al constructor del InputStreamReader, este nuevo parámetro, lo que indica es la codificación que se usará para leer. En este caso le puse la codificación Cp850 que es la que usa mi windows.

Si no te funciona, simplemente abre una ventana de cmd y escribe chcp, este comando te dirá la codificación que usa tu cmd, te saldrá una linea diciéndote por ejemplo:
Página de códigos activa:850
Pues según lo que te diga a ti, vas a esta pagina:
Tabla de charsets java
Y buscas en la lista la codificación que te indicó el cmd, tras esto, te vas a tu programa java y sustituyes el Cp850 por el correspondiente al tuyo.

Bueno un saludo y espero que te sirva.

julio 26, 2015 | Registered Commenterloderain

Gracias por la ayuda, de esa manera encontré la solución:

Runtime cmd = Runtime.getRuntime();
Process proceso;
try {
proceso = cmd.exec("netsh wlan show hostednetwork");
BufferedReader read = new BufferedReader (new InputStreamReader(proceso.getInputStream(),"IBM850"));

String linea;
while((linea = read.readLine())!=null){
System.out.println(linea);
}
} catch (IOException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
}

julio 26, 2015 | Unregistered CommenterDavid