tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Matthias Reitinger
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
2096
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    DarthShader DarthShader ist offline Mitglied Platin
    Registriert seit
    May 2004
    Beiträge
    684
    Guten Abend zusammen,

    ich würde mich über ein wenig Unterstützung bei folgendem kleinen Problem freuen:

    Ich habe hier eine Textdatei (mit dem Programm UltraEdit32) erstellt, in der folgende Zeilen sind:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    Mars
    Jupiter
    Erde
    Sonne
    Pluto
    Venus
    Uranus
    Merkur
    Saturn
    Ü
    Ä
    Ö

    Die Kodierung ist UTF-8, Unix Zeilenenden. Ich lese diese Datei folgendermaßen ein:

    Code :
    1
    2
    3
    4
    5
    6
    
    List< String > lines = new ArrayList< String >();
    String line = null;
    BufferedReader br = new BufferedReader( new InputStreamReader( in, "UTF-8" ) );
            
    while ( ( line = br.readLine() ) != null )
        lines.add( line );

    ("in" ist ein FileInputStream)

    Gebe ich die String in "lines" aus, so erhalte ich diese Ausgabe auf der Console:

    Code :
    1
    2
    3
    
    ?Mars
    Jupiter
    ....

    (der Rest nach ... ist identisch mit oben).

    Woher jedoch kommt das "?" (welches ja nur ein Platzhalter für irgendein nichtdarstellbares Zeichen ist) vor "Mars"?

    Das hat sicher irgendetwas mit der Kodierung zu tun, aber bei der Thematik habe ich mich schon immer verfranzt Ich hoffe jemand kann etwas Licht ins Dunkel bringen!

    Vielen Dank
     

  2. #2
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Arbeitest du unter Windows und lässt dir das ganze auf der Konsole ausgeben? Windows hat nämlich keine Unicode-Konsole, daher können Unicode Zeichen dort nicht korrekt dargestellt werden.

    Wie siehts mit den Umlauten aus, werden die korrekt dargestellt?
     

  3. #3
    DarthShader DarthShader ist offline Mitglied Platin
    Registriert seit
    May 2004
    Beiträge
    684
    Ja ich arbeite unter Windos. Allerdings möchte ich letztendlich die Wörter in JLabels anzeigen und auch ein JLabel zeigt mir solch einen Platzhalter an (kein Fragezeichen sondern an der Stelle ein kleines Rechteck).

    Umlaute werden korrekt dargestellt, auf der Konsole sowie auch auf einem JLabel.

    Es ist ja sehr merkwürdig, dass genau am Anfang dieses komische Zeichen auftaucht. Als wenn es von der Kodierung her dort Informationen gibt, die Java nicht interpretieren kann, oder sowas in der Art.
     

  4. #4
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Hab ich ganz vergessen dir zu antworten... sorry.

    Wenn die Umlaute korrekt sind, dann sollte das einlesen auch korrekt sein. Lösch doch mal den Dateianfang vom Mars inklusive M und gib das neu ein. Vllt steht da echt unsinn.
     

  5. #5
    DarthShader DarthShader ist offline Mitglied Platin
    Registriert seit
    May 2004
    Beiträge
    684
    Das habe ich mal ausprobiert, und das Fragezeichen taucht wieder am Anfang auf. Das ist wirklich merkwürdig... aber ich denke mal eine Textdatei als UTF-8 mit Unix Zeilenende per UltraEdit32 zu speichern, kann ja nicht falsch sein (Das Programm ist ja für Textverarbeitung nicht gerade unbakannt).

    Würdest Du es vielleicht einmal bei Dir ausprobieren, wenn ich die Textdatei zur Verfügung stelle?
     

  6. #6
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Hmm ich kanns ausprobieren obs bei mir geht ja, ist allerdings nen Ubuntu.
     

  7. #7
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.806
    Blog-Einträge
    5
    Hallo,

    möglicherweise steht am Anfang der Datei ein Byte Order Mark. Schau mal, ob du deinen Editor dazu bringen kannst, das nicht mehr in die Datei zu schreiben.

    Grüße,
    Matthias
    DarthShader bedankt sich. 
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  8. #8
    DarthShader DarthShader ist offline Mitglied Platin
    Registriert seit
    May 2004
    Beiträge
    684
    Zitat Zitat von Matthias Reitinger Beitrag anzeigen
    möglicherweise steht am Anfang der Datei ein Byte Order Mark. Schau mal, ob du deinen Editor dazu bringen kannst, das nicht mehr in die Datei zu schreiben.
    Das war es tatsächlich. In UltraEdit32 gibt es die Möglichkeit, beim Speichern der Datei "UTF-8 ohne BOM" zu wählen. Nun liest er korrekt ein.

    Vielen Dank! Wieder was gelernt
     

Ähnliche Themen

  1. Problem beim Erstellen einer Textdatei
    Von joe81 im Forum .NET Windows Forms
    Antworten: 2
    Letzter Beitrag: 01.11.10, 07:58
  2. Antworten: 3
    Letzter Beitrag: 31.08.09, 15:11
  3. Antworten: 3
    Letzter Beitrag: 03.07.09, 11:43
  4. Verständnis-Probleme beim Textdatei in Variable einlesen
    Von Lautsprecher im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 23.12.05, 09:49
  5. Problem beim Datei einlesen
    Von avenger2099 im Forum C/C++
    Antworten: 7
    Letzter Beitrag: 18.05.05, 10:37