# XML Underlying stream encoding + doppelte vs. einfache Anführungszeichen



## michaelarban (14. Jan 2013)

Hallo zusammen,


ich habe vor, meine bisherige Umgebung (Suse 8.1 + jdk 1.5)  umzustellen auf Centos 6.2 und jdk 1.6 .

Bei den Tests hat sich folgendes Problem ergeben:

Bei der Erstellung von xml-Dateien taucht die Fehlermeldung auf

Underlying stream encoding 'ISO8859_15' and input paramter for writeStartDocument() method 'ISO-8859-1' do not match

Als workaround führe ich die Anwendung nun mit dem jvm-Parameter "Dfile.encoding" aus:


```
/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java -Dfile.encoding=ISO-8859-1 meineAnwendung
```

Die obige Fehlermeldung taucht dann nicht mehr auf und die xml-Datei wird auch korrekt erzeugt bis auf eine einzige Ausnahme:
statt 
[XML]<?xml version='1.0' encoding='ISO-8859-1'?> [/XML](unter Suse8.1 + jdk 1.5) steht
[XML]<?xml version="1.0" encoding="ISO-8859-1"?>[/XML]  (also mit doppelten Anfürhungzeichen)

Die xml-Datei ist ja auch mit doppelten Anfürhrungzeichen valide, jedoch wären mir die bisherigen einfachen Anführungzeichen lieber 

Leider habe ich nicht die Java-sourcen dieser Anwendung, so dass ich keine Anpassungen machen kann.


Kann mir jemand sagen, 
-woher und warum die erste Fehlermeldung (Underlying..) kommt
-wie ich einfache Anführungszeichen bekomme

Danke


----------



## michaelarban (14. Jan 2013)

Vollständigkeitshalber sollte erwähnt werden, dass die xml-Datei mit Stax erstellt wird.


----------



## michaelarban (18. Jan 2013)

hat den keiner eine Idee ???:L


----------



## Bleiglanz (18. Jan 2013)

Warum codierst du die XML-Datei nicht neu, was soll der Workaround?


----------



## michaelarban (18. Jan 2013)

hallo Bleiglanz,

was meinst du mit "xml-Datei neu codieren" ? 
Die xml-Datei wird durch eine java-Anwendung erzeugt, deren source-Code ich leider nicht habe.

Kann es sein, dass es am jdk liegt? früher bentzte ich jdk 1.5 , jetzt 1.6


----------



## Bleiglanz (18. Jan 2013)

Dein altes Linux hatte ein default-encoding, dein neues Linux hat auch eines, das Java-Programm schreibt normalerweise im Encoding der Plattform oder einem intern eingestelltem.

Tipp: lass mal diverse unix-tools drüberlaufen (xmllint, file) und versuch rauszukriegen wie die Datei codiert ist


----------



## michaelarban (18. Jan 2013)

Hallo Bleiglanz,

ich Aufruf von file test kommt

bei suse 8.1 mit jdk1.5 :  "XML document text"

bei Centos 6.2 mit jdk1.6 :  "XML document text"

wo kann ich bei Centos das default-Encoding ändern? ich habe mal in /etc/sysconfig/i18n folgendes eingetragen, ohne Erfolg

LANG="de_DE@euro"
SUPPORTED="de_DE.UTF-8:de_DE:de"
SYSFONT="latarcyrheb-sun16"


----------

