utf-8 und java

miwieg

Mitglied
Hallo,

Ich habe eine Frage bezüglich Encoding von natürlich-sprachlichem Text.
Wenn ich mit Java eine Text-Datei einlese, die in utf-8 kodiert ist, ohne dass ich beim Einlesen explizit etwas bezüglich Encoding-Format sage, z.B. benutze ich folgenden Code:
Java:
BufferedReader br = new BufferedReader(new FileReader(file));
String line = br.readLine();
kann es dann irgendwelche Probleme geben, so dass Characters nicht richtig erkannt werden oder mein Java Programm zur Laufzeit abstürzt?
Dabei nehme ich an, dass mein Rechner für eine beliebige Sprache der Welt konfiguriert worden ist.

Vielen Dank im Voraus.
 
Java:
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("foo.file"), Charset.forName("UTF-8")));

EDIT:
Na das nennt man mal decorator Pattern 😀


EDIT2:
Ach ja und:
FileReader:
The constructors of this
* class assume that the default character encoding and the default byte-buffer
* size are appropriate. To specify these values yourself, construct an
* InputStreamReader on a FileInputStream.

das default encoding ist wohl je nach maschine verschieden. Win hat meist cp1251, Linux meisst UTF-8.
Letzthin war hat ich mal auf nem Debian ANSI-1968 oder so....
 
Zuletzt bearbeitet:
Danke für den Code mit der expliziten Encoding-Anweisung. Meine Frage war allerdings, ob ich etwas befürchten muss, wenn ich auf diese explizite Anweisung verzichte?
 
Der Müde Joe hat es dir doch quasi schon beantwortet: Wenn du nichts angibts, wird die Standardkodierung des Systems genommen. Die kann stimmen, muss aber nicht. UTF-8 ist zwar sehr freundlich zu 1-Byte-Zeichensätzen, kann aber auch Mehrbyte-Zeichen enthalten. In dem Fall bekommt man nur Müll, wenn man eine UTF-8-kodierte Datei mit cp1252 oder ähnlichem einliest. Ob der Fall in der Praxis auftritt ist eine andere Frage.
 
Hallo,

bei der Codierungs-Geschichte hatte ich schon Probleme: Eine Datei unter Linux mit JavaProg XY bearbeitet, dann mit XY unter windows wieder ausgelesen: Umlaute zerstört. Wenn das Programm also plattformübergreifend arbeiten soll, sollte beim Schreiben und Lesen die Codierung explizit angegeben werden.
 

Neue Themen


Zurück
Oben