Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


10.3.2

Zeichenkodierung


Da es auf verschiedenen Systemen unterschiedliche Zeichensätze gibt, müssen die Adapterklassen auch die Möglichkeit zur Konvertierung dieser unterschiedlichen Zeichensätze in Unicode und umgekehrt bieten.

So wie die Klassen InputStreamReader und OutputStreamWriter im letzten Abschnitt angewendet wurden, wird eine Default-Kodierung für die Umwandlung benutzt. Diese gewählte Default-Kodierung entspricht der Kodierung des Zeichensatzes auf dem verwendeten System und wird zuvor automatisch von den Adapterklassen ermittelt.

Man kann aber nicht nur die Default-Kodierung verwenden, sondern besitzt auch die Möglichkeit eine andere Zeichenkodierung anzugeben. Hierzu muss man für die Initialisierung der Adapterklassen andere Konstruktoren verwenden, die jeweils einen zusätzlichen String-Parameter erwarten, durch den die entsprechende Kodierung für die Zeichenumwandlung spezifiziert wird.

Die jeweilige plattformabhängige Kodierung kann über die Property file.encoding abgefragt werden (Properties sind in Java eine Art Ersatz von Umgebungsvariablen und werden ausführlich in Kapitel 14.2 beschrieben.). Per Voreinstellung ist der Zugriff auf diese Property aus Sicherheitsgründen jedoch nicht möglich. Einem Programm müssen zuvor die nötigen Rechte eingeräumt werden, damit ein Zugriff erfolgen kann. Die Ausführung von
 System.out.println(System.getProperty("file.encoding"));
würde bei ausreichenden Rechten somit den Namen der Zeichenkodierung ausgeben. Auf einigen Systemen ist diese Property allerdings nicht gesetzt. Objekte der Klassen InputStreamReader und OutputStreamWriter, die ohne explizite Angaben einer Kodierung intialisiert werden, verwenden in diesem Fall iso-latin-1.

Folgende Verwendung eines InputStreamReaders wäre z. B. gültig:
 InputStreamReader in = 
            new InputStreamReader(System.in, "latin1");
Die Angabe der Kodierung erfolgt in diesem Fall also explizit mit dem Konstruktor. Nun ist es üblicherweise so, dass ein Zeichensatz nicht nur einen Namen, sondern mehrere besitzt. So meinen z. B. die Bezeichnungen iso-latin-1 und ISO_8859-1 den gleichen Zeichensatz. Aus diesem Grund ist die Angabe eines solchen Zeichensatzes auch nicht nur über einen, sondern gleichzeitig durch mehrere Namen möglich.

Ist eine Adapterklasse einmal initialisiert, so kann man die eingestellte Kodierung durch Aufruf der Methode getEncoding(), die sowohl in der Klasse InputStreamReader als auch OutputStreamWriter definiert ist, abrufen.


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.