Rafał Rybacki Java Developer
Temat: Problem z kodowaniem
WitamW mojej aplikacji uruchamiam zewnętrzny proces i próbuje wyświetlić w JTextArea strumień wejściowy tego procesu. Niestety pomimo usilnych prób i kombinowania ciągle nie potrafię wyświetlić polskich znaków.
Czy ktoś z użytkowników implementował podobną funkcjonalność z lepszym rezultatem? Poniżej zamieszczam kod
StringBuilder cmd = new StringBuilder();
cmd.append("cmd.exe /U /C "); // /U - unicode, /C - zakończ po wykonaniu komendy
cmd.append( pakSkanField.getText() ); //uruchomienie aplikacji
cmd.append( " \"" + dirField.getText()+"\""); //jeden z parametrów uruchamianej aplikacji
System.out.println(cmd.toString());
try {
Process process = runtime.exec(cmd.toString() );
BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream(),"Windows-1250")); //tutaj umieszczałem już m.in UTF-8, Windows-1250, ISO-8859-2, itd
StringBuffer sb = new StringBuffer(cmd+"\n");
String line = "";
while ((line = input.readLine())!=null){
sb.append(line);
}
originalLog = sb.toString();
logArea.setText(originalLog);
System.out.println(sb.toString());
} catch (IOException ex) {
Logger.getLogger(PakSkanDialog.class.getName()).log(Level.SEVERE, null, ex);
}
Ponadto próbowałem dekodować otrzymany string w oparciu o każdą dostępną tablicę Charset. Dla żadnej z nich nie wyświetlone zostały polskie znaki :/
Problem rozwiązany - domyślnie stosowaną stroną kodową w cmd jest IBM852. Wystarczyło podać nazwę jako parametr InputStreamReadera i już śmiga :)Rafał Rybacki edytował(a) ten post dnia 29.01.10 o godzinie 13:56