style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

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

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Re: comando CMD

El Símbolo de sistema de Windows no utiliza la codificación de caracteres UTF-8. Dependiendo de la versión de Windows y la región, este puede usar IBM850 (akka Cp850) o IBM437 (akka Cp437) o windows-1252 (akka Cp1252).

Imagen de Cid

Complementando

Aquí como agregarlo a un JTextArea
How to add diffrent characterset support for JtextArea?

La codificación que utiliza

La codificación que utiliza Windows en mi PC es la IBM850, cuando lo cambie, los acentos se mostraron correctamente.
Logre implementarlo en un JComboBox, también se muestra bien los acentos.
Ahora el siguiente paso es como identificar la codificación que utiliza Windows para evitar que en otros lugares salgan mal.

Gracias.

Re: como identificar

… como identificar la codificación que utiliza Windows …

Ejecuta un comando simple, por ejemplo vol, que contenga una palabra acentuada (en este caso, la palabra número). Si alguna codificación la lee correctamente, entonces puedes usar esa. Es decir, algo semejante:

private static String findCharset() throws IOException {
    for (String charset : new String[]{"IBM850", "IBM437", "windows-1252"}) {
        Process process = Runtime.getRuntime().exec("cmd /C vol");
        try (Scanner sc = new Scanner(process.getInputStream(), charset)) {
            sc.useDelimiter("\\A");
            if (sc.next().contains("número")) {
                return charset;
            }
        }
    }
    return null;
}

Gracias no lo había pensado

Gracias no lo había pensado de ese modo, primero se identificaría la codificación Windows, luego se mostrara según la codificación que utiliza Windows en Java, así evitar errores.

public class Identificar {
   
public static String Detectar_Windows() throws IOException{
   for (String charset : new String[]{"IBM850", "IBM437", "windows-1252"}) {
        Process process = Runtime.getRuntime().exec("cmd /C vol");
        try (Scanner sc = new Scanner(process.getInputStream(), charset)) {
            sc.useDelimiter("\\A");
            if (sc.next().contains("número")) {
                //System.out.println(charset);
                return charset;
               
            }
        }
    }

    return null;
}    
   
public void Mostrar() throws IOException{
   
String ident=Identificar.Detectar_Windows();
   
Runtime cmd = Runtime.getRuntime();
Process proceso;
try {
proceso = cmd.exec("netsh wlan show hostednetwork");
BufferedReader read = new BufferedReader (new InputStreamReader(proceso.getInputStream(),ident));

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

   public static void main(String[] args) throws IOException {
       
          Identificar ij = new Identificar();
 
          ij.Mostrar();
    }
   
}

El resultado seria lo siguiente:

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

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">