Problem beim Einlesen von Textdatei mit UTF-8

DarthShader

Erfahrenes Mitglied
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:
Mars
Jupiter
Erde
Sonne
Pluto
Venus
Uranus
Merkur
Saturn
Ü
Ä
Ö

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

Code:
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:
?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
 
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?
 
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.
 
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.
 
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?
 
Zurück