tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von deepthroat
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
554
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Lasslow Lasslow ist offline Grünschnabel
    Registriert seit
    Nov 2010
    Beiträge
    4
    Hi...

    ich habe mal wieder einen Kampf gegen Zeichensätze und weiß nicht weiter. Zu den möglicherweise relevanten Infos:

    Windows XP SP3 - Deutsch

    Ziel: Ein Netzlaufwerk mit Java verbinden und die Konsolenausgabe des Prozesses p zu bekommen. Hier einmal Code!

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    
    package system.process.io;
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;
     
    public class TestProcessIO {
     
        private TestProcessIO() { }
        
        public static void main(String[] args) {
            Runtime rt = Runtime.getRuntime();
            Process p;
            
            
            try {
                p = rt.exec("net use v: \\\\server.de\\langer\\link /user:ballablub unglaublichsicher");
     
            } catch (IOException e) {
                p = null;
                e.printStackTrace();
            }
            
     
            BufferedReader error;
            BufferedReader input;
            try {
                error = new BufferedReader(new InputStreamReader(p.getErrorStream(), "UTF-8"));
                input = new BufferedReader(new InputStreamReader(p.getInputStream(), "UTF-8"));
            } catch (UnsupportedEncodingException e) {
                error = null;
                input = null;
                e.printStackTrace();
            }
     
            String line;
            /* print errorstream */
            try {
                do {
                    line = error.readLine();
                    if(line != null) System.out.println(line);
                } while (line != null);
            } catch (Exception e) {
                e.printStackTrace();
            }
            
            /* print inputstream */
            try {
                do {
                    line = input.readLine();
                    if(line != null) System.out.println(line);
                } while (line != null);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    Nun erhalte ich die Ausgaben die ich möchte... allerdings werden alle Sonderzeichen mit Fragezeichen ersetzt ca. so:

    Code :
    1
    2
    3
    
    Systemfehler 85 aufgetreten.
     
    Der lokale Ger?tename wird bereits verwendet.

    Das connecten funktioniert. Ich hab nur den ganzen Code gepostet, da ich sicher gehen wollte, dass der Zusammenhang klar wird.

    Danke danke
    und bye bye

    Daniel

    P.S.: Suchfunktion bereits verwendet jedoch keine funktionierende Lösung gefunden
     

  2. #2
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hi,

    Windows arbeitet nicht mit UTF-8, sondern mit cp1250.

    Eventuell ist ja mit folgender Änderung getan:
    Code java:
    1
    2
    
    error = new BufferedReader(new InputStreamReader(p.getErrorStream(), "cp1250"));
    input = new BufferedReader(new InputStreamReader(p.getInputStream(), "cp1250"));

    Gruß
    BK
    Geändert von Bratkartoffel (24.11.10 um 15:14 Uhr) Grund: Kommentar vor dem Source
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  3. #3
    Lasslow Lasslow ist offline Grünschnabel
    Registriert seit
    Nov 2010
    Beiträge
    4
    Danke für die Hilfe, nun erhalte ich einmal ein „ und einemal wieder das ?

    Code :
    1
    2
    3
    
    Systemfehler 85 aufgetreten.
     
    Der lokale Ger„tename wird bereits verwendet.

    Code :
    1
    
    Der Befehl wurde erfolgreich ausgef?hrt.

    Könnte es eventuell an etwas anderem noch liegen? Oder könnte mein deutsches XP SP 3 irgendwo einen anderen Zeichensatz verwenden?
     

  4. #4
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hi,

    habe hier einen Artikel gefunden, der dein Problem am unteren Ende der Seite kurz anschneidet. Verwendest du Eclipse? Hast du es einmal direkt über die Konsole auch probiert?

    Eventuell hilft dir ja der Codeausschnitt auf der Seite weiter.

    Gruß
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  5. #5
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von Bratkartoffel Beitrag anzeigen
    Hi,

    Windows arbeitet nicht mit UTF-8, sondern mit cp1250.
    Das ist nur teilweise richtig und hängt natürlich von den Einstellungen bzw. der Sprachversion ab.

    Windows verwendet nämlich 3 Zeichensätze:

    1. intern und für Unicode Anwendungen UTF-16
    2. in ANSI Anwendungen eine ANSI Codepage (z.B. CP1252)
    3. in der Konsole eine andere Codepage (z.B. CP850)

    Man kann die verwendete Codepage in der Konsole mit dem Programm "chcp" anzeigen bzw. ändern.

    Code :
    1
    2
    3
    4
    
    > chcp
    Active code page: 850
    > chcp 65001 
    Active code page: 65001
    Die besten Resultate erzielt man, wenn man eine Truetype Schriftart (z.B. Lucida Console) verwendet und die Codepage auf UTF-8 stellt (65001). Dabei können die meisten Zeichen angezeigt werden.

    Gruß
    Bratkartoffel bedankt sich. 
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  6. #6
    Lasslow Lasslow ist offline Grünschnabel
    Registriert seit
    Nov 2010
    Beiträge
    4
    Vielen Dank!
    cp850 hat funktioniert.
     

Ähnliche Themen

  1. jQuery gibt mir im IE bei Width bzw. Height "auto" zurück
    Von Thopeto im Forum Javascript & Ajax
    Antworten: 11
    Letzter Beitrag: 19.06.10, 20:09
  2. Antworten: 7
    Letzter Beitrag: 09.04.10, 20:57
  3. Antworten: 3
    Letzter Beitrag: 07.06.09, 17:23
  4. Winzip über konsole: wie drücke ich "automatisch Enter"?
    Von janinejaeger im Forum Sonstige Sprachen
    Antworten: 1
    Letzter Beitrag: 03.07.07, 18:37
  5. Antworten: 2
    Letzter Beitrag: 01.11.05, 11:53