Also vorab erstmal das Ergebnis: Es geht, was natürlich sehr gut ist!
Allerdings ist mir nicht ganz klar warum, was nicht so gut ist ;o)
Ich will nicht rechthaberisch wirken, aber eigentlich müsste mit UTF-8 alles an Zeichenkodierungen abgedeckt sein, was es überhaupt auf unserem Planeten gibt an Zeichen, denn UTF-8 kann laut Wikipedia 1.114.112 Unicode-Zeichen abbilden. Dazu gehören auch die nordeuropäischen Sonderzeichen wie deutsche Umlaute oder das nordische a mit Kringel drauf (u.s.w.). D.h. ISO-8859-1 (oder LATIN-1) ist eine Untermenge von UTF-8 (s. z.B. die Seite hier:
http://www.columbia.edu/kermit/utf8.html mit ganz witzigen Beispielen). Soweit die Theorie; die Praxis sieht so aus:
Ich hatte zum testen alles auf ISO-8859-1 gesetzt (InputSource.setEncoding("ISO-8859-1"), den XML-header der einzulesenden Datei und den XMLOutputter - und siehe da es funktionierte. Um nun einzugrenzen, wer hier dieses encoding nicht versteht, habe ich alles wieder zurückgesetzt auf UTF-8 und nacheinander alle möglichen Stellen auf ISO gesetzt, bis die richtige Ausgabe kam. Hier der Code mit dem es geht:
Code:
---------
private boolean BindWMC() throws JDOMException, IOException{
boolean bSuccess=false;
Format format = Format.getPrettyFormat();
format.setEncoding("ISO-8859-1");
SAXBuilder sxbuild = new SAXBuilder();
InputSource is;
is = new InputSource(m_MyUtils.GetWMCPath());
is.setEncoding("UTF-8");
Document doc = sxbuild.build(is);
this.m_WMCdoc=doc;
//Ausgabe der XML zu Testzwecken:
XMLOutputter out = new XMLOutputter();
out.setFormat(format);
out.output( doc, System.out );
bSuccess=true;
return bSuccess;
}
---------
Auch der XML-header ist hier wieder UTF-8. Das heißt für mich, dass SAXBuilder- bzw. Document-intern das Dokument mit einem erweiterten (richtigen) Zeichensatz gehandelt wird und nur der XMLOutputter Probleme hat mit UTF-8, was mich allerdings auch wundern würde, denn in einer anderen Klasse lasse ich ein als UTF-8 kodiertes XML mit dem Outputter ausgeben, das durchaus Umlaute darstellen kann:
Code:
---------
private String GetRecordsRequest_PropIsLike(String SearchWord){
String cSearchClause="";
String GetRecordsRequest="";
Namespace ns = Namespace.getNamespace("http://www.opengis.net/cat/csw");
Namespace ns1 = Namespace.getNamespace("http://www.opengis.net/ogc");
Format format = Format.getPrettyFormat();
format.setEncoding("UTF-8");
XMLOutputter xmlOut = new XMLOutputter(format);
//GetRecords
Element root = new Element("GetRecords");
Document doc = new Document(root); //hier wird ein Dokument draus
root.setNamespace(ns);
root.setAttribute("version","2.0.0");
[...]
GetRecordsRequest=xmlOut.outputString(doc);
return GetRecordsRequest;
}
---------
Also muss der Fehler noch woanders liegen, oder wie siehst du das Zerix?
Wie auch immer - ich kann an dieser Stelle weitermachen. Vielen Dank für deine Hilfe.
Albrecht