Java RegEx matcht kein °

...komplette Frage anzeigen

1 Antwort

Die Programmdatei ist in einem bestimmten "charset" erstellt. Welches das ist, hängt ein bißchen von der Entwicklungsumgebung ab, dürfte aber meist UTF-8 sein. Was sich im laufenden Programm als Match-String wiederfindet, ist das, was im Quelltext steht, in der Zeichensatzkodierung des Quelltextes interpretiert. Dort dürfte die Sache soweit hinhauen. Die Konsole dagegen arbeitet mit einem systemabhängigen Zeichensatz. Das könnte zum Beispiel hierzulande üblicherweise ISO-9959-1 sein. Aus irgendeinem Grunde haben aber die Erfinder der Java-Runtime es so eingerichtet, daß der Standard-Zeichensatz, der vorausgesetzt wird, UTF-8 ist. Um das miteinander in Übereinstimmung zu bringen, kann man den Zeichensatz des Lese-Streams explizit anpassen:

String consoleEncoding = "ISO-8859-1";
BufferedReader in = new BufferedReader(new InputStreamReader(System.in, consoleEncoding));

Der Standard-Charset, der bei einem InputStreamReader eingesetzt wird, ist offenbar leider immer UTF-8 - und damit nicht das, was die Systemkonsole tatsächlich nutzt:

System.out.println(new InputStreamReader(System.in).getEncoding());

(Es handelt sich um "nativen Code" - also systemabhängiges Zeug, welches in der systemspezifischen JVM hinterlegt ist.)

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?