Default Encoding der JVM

takidoso

Erfahrenes Mitglied
Hallo und Halli,
erst vor kurzem habe ich mich auf einer Solriskiste mächtig gewundert. Es existiert ein rein dateiverarbeitendes Programm und sein startscript schon seit Jahren. Zeitlich gleich nach einer kleineren Programmänderung meinte das Programm plötzlich Umlaute nicht mehr mitnehmen zu können. Die ursache war in sofern schnell gefunden, dass die Solariskiste von den Betriebssystemeinstellung offenbar nicht den gewünschten ISO8859-15 verwendet, zumindest zeigten Tests mit Abfrage irgendeine reine ASCII Encodierung.

Ich weiß,dass der JVM mittels Vorgabe der System-Property file.encoding das Encoding vorgegeben werden kann. Doch woher nimmt eine JVM eigentlich den Default? Ich hatte angenommen und fand auch ein paar vage Hinweise im Internet, dass sie es aus dem Betriebssystem nähme. Aber woher genau (z.B. bei Solaris)?

Das Rätsel, was sich mir heir stellt, warum geht es Jahre lang gut und dann plötzlich nicht mehr? Kann es sein dass Complieparameter auch ausschlaggebend sein können?

Mit fragenden Grüßen

Takidoso
 
Es stimmt, die JVM nimmt das Default Encoding des Betriebsystems welches bei fast allen Unix Derivaten standardmäßig "US-ASCII" ist.

Das Setzen via Property muss vor dem Start der Anwendung über JVM Parameter erfolgen.

Ansonsten wird für alle Strings und Streams das Default-encoding benutzt.

Beim Programmieren muss darauf geachtet werden, dass bei bestimmten Ein und Ausgabeströmen sowie bei Strings das gewünschte Encoding verwendet wird.

Was man bei Solaris tun muss um dieses umzustellen, weiß ich nicht.

mfg,
Martin
 
Zuletzt bearbeitet:
die JVM benutzt intern eine Abwandlung von UTF-16
.

Die JVM benutzt für Strings intern zwar UTF16, jedoch wird zum Beispiel bei einem PrintStream das Default File-Characterencoding des Betriebssystems benutzt.

Wenn eine Datei jetzt zum Beispiel US-ASCII encoded ist, dann verändert das Umstellen des Encodings im Betriebssystem die vorliegende Textdatei nicht.

Lieber Threadersteller, was meinst du mit "Umlaute nicht mehr mitnehmen können"?.
Handelt es sich hier um ein Problem mit dem Ein/Auslesen von (Text)Dateien?
Oder ist die Darstellung von Sonderzeichen auf einer grafischen Oberfläche nicht möglich?
 
Zurück