1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

inputStreamReader und deutsche Sonderzeichen

  • Paulchen
  • 14. August 2005 um 20:27
  • Unerledigt
  • Paulchen
    1
    Paulchen
    Gast
    • 14. August 2005 um 20:27
    • #1

    Ich hab da ein kleines Problem mit dem Einlesen von Text über die Standardeingabe:

    Code
    ...
    BufferedReader input=new BufferedReader(new InputStreamReader(System.in, "ISO-8859-1"));
    System.out.println(input.readLine());
    ...

    Dieses Codestück soll nichts anderes machen als einen Text einlesen und diesen anschließend ausgeben. Einziges Problem: die deutschen Sonderzeichen. Abhängig vom gewählten Zeichensatz erhalte ich entweder lauter Fragezeichen (ISO-8859-1) oder ä, ö, Ä, Ö, Ü, ß korrekt, jedoch für ü ein Fragezeichen (windows-1252). Welchen Zeichensatz muss ich wählen bzw. was muss ich sonst machen, damit das korrekt funktioniert???

  • hal
    32
    hal
    Mitglied
    Reaktionen
    52
    Punkte
    11.122
    Beiträge
    2.208
    • 14. August 2005 um 22:18
    • #2

    das hängt vom gewählten encoding deines terminals ab...

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • Almlieschen
    13
    Almlieschen
    Mitglied
    Reaktionen
    8
    Punkte
    1.718
    Beiträge
    304
    • 23. Juli 2007 um 14:45
    • #3

    Es ist zwar schon sehr lange her, dass dieses Thema aktuell war, aber da es ziemlich gut zu meinem Problem passt und leider nie eine Antwort gefunden wurde, erlaube ich mir ein re-opening, um anderen, die auch so hängen wie ich, die Suche zu erleichtern :)

    Mein Problem konkret:

    Code
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
                String tracks_pure = in.readLine();

    Diese einfachen Zeilen sollen mir die Magnetstreifen einer Kreditkarte einlesen, der Input dazu kommt von einer Cherry-Tastatur mit Magnetstreifenleser.
    Das Problem: die einzelnen Tracks sind durch 'ü' s getrennt....und ich brauche die Anzahl der ü's für mein Programm.
    Unter Linux funzt alles einwandfrei, sowohl in Eclipse als auch der Konsole werden die ü's gezählt, unter Windows aber läuft das Programm nur unter Eclipse einwandfrei, die Windowskonsole kennt keine ü's ....ich hab locker schon 2 Tage lang gegoogelt und seltsamerweise funktioniert nichtmal die java-insel Anleitung von hier: http://www.galileocomputing.de/openbook/javai…4261289b3b74cc0

    Wie ich das Encoding meines Terminals einstelle, wüsst ich aber unter Windows nicht.... (und es soll ja nicht nur die Anzeige passen, sondern vor allem das, was im Hintergrund gelesen wird!)

    Ich bin für jede Hilfe dankbar, ich hab schon so ziemlich jeden Anleitungsversuch, den ich ergoogelt hab ausprobiert, aber nichts hilft....im allgemeinen kommt mir das Thema sehr ungenügend beantwortet vor....aber viellleicht hat ja doch schon jemand den Durchbruch geschafft :)

    Ihr glücklichen Augen, Was je ihr gesehen, Es sei wie es wolle, Es war doch so schön!

  • Paulchen
    1
    Paulchen
    Gast
    • 23. Juli 2007 um 22:22
    • #4

    Was ist denn der Zeichencode der statt der ü-s auftretenden Zeichen? Kannst du das ermitteln und mit diesem Wissen dann den String zerlegen?

  • Almlieschen
    13
    Almlieschen
    Mitglied
    Reaktionen
    8
    Punkte
    1.718
    Beiträge
    304
    • 23. Juli 2007 um 22:29
    • #5

    statt dem ü tritt ein ³ auf....ich muss aber zugeben, dass ich bei den ganzen problemlösungen diese noch immer nicht ausprobiert habe...grmbl....
    allerdings wird der string mit einem ü eingelesen und über das stdin auf der konsole auch so ausgegeben, deshalb könnte ich mir vorstellen, dass das niciht unbedingt hinhauen wird.....
    aber ich werds doch noch endlich ausprobieren und dann bescheid geben :)

    (danke, irgendwie übersieht man manchmal vor verbissenem suchen die einfachen lösungswege.....)

    Ihr glücklichen Augen, Was je ihr gesehen, Es sei wie es wolle, Es war doch so schön!

  • Almlieschen
    13
    Almlieschen
    Mitglied
    Reaktionen
    8
    Punkte
    1.718
    Beiträge
    304
    • 24. Juli 2007 um 08:42
    • #6

    Diese Lösung funktioniert leider nicht :frowning_face:
    Bezüglich "Kannst du das ermitteln": ich hab jetzt einfach jenes Zeichen genommen, das ich bei vom Programm auf der Konsole ausgegebenen Zeichen sehe, da stand z.B. statt "für" "f³r" ....

    Ihr glücklichen Augen, Was je ihr gesehen, Es sei wie es wolle, Es war doch so schön!

  • Paulchen
    1
    Paulchen
    Gast
    • 24. Juli 2007 um 09:37
    • #7

    Ich nehm mal an, das ³ in der Konsole ist ungleich dem ³ in Eclipse.

    Ist input deine Eingabe und a der Index, an dem sich das schadhafte Zeichen befindet, so bekommst du mit

    Code
    int code=input.charAt(a);


    den Zeichencode dieses Zeichens. Diesen Zeichencode kannst du, anders als das ³ oder das ü, problemlos im Programm hardcoden.

    Mit

    Code
    input.indexOf(code);

    solltest du dann den Index des ersten Vorkommens des gesuchten Zeichens in der Eingabe finden können.

    Mag zwar vielleicht eine etwas dreckige Lösung sein, sollt aber meiner Meinung nach funktionieren.

  • Almlieschen
    13
    Almlieschen
    Mitglied
    Reaktionen
    8
    Punkte
    1.718
    Beiträge
    304
    • 25. Juli 2007 um 08:49
    • #8

    nachdem ich jetzt wieder einen tag rumgeschissen habe, weil ich dachte, so gehts auch nicht, bin ich grad im halbschlaftaumel draufgekommen, dass ich ständig nach

    Code
    int code = input.charAt(1);

    gesucht hab, obwohl meine ü's ja an erster Stelle stehen....wie einen solche kleinigkeiten zeit rauben können, argl....

    aber, nichtsdestotrotz: es funktioniert :) vielen dank für diese idee! :thumb:
    so dreckig find ich sie gar nicht, hauptsache es läuft!

    Ihr glücklichen Augen, Was je ihr gesehen, Es sei wie es wolle, Es war doch so schön!

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern