Daniel Thoma: Parameterübergabe an Servlet mit Sonderzeichen

Beitrag lesen

Hallo Karsten,

OutputFormat format = new OutputFormat(xmlDoc,"iso-8859-1",false);
StringWriter stringout = new StringWriter();
XMLSerializer serial = new XMLSerializer(stringout, format);

Du gibst beim OutputFormat die Zeichenkodierung an, verwendest für die Ausgabe aber einen Writer. Ein Writer arbeitet aber nicht Byte-, sondern Zeichenbasiert. (In Java sind Zeichen immer utf-16-kodiert) Vermutlich hat Deine Zeichensatzangabe also exakt überhaupt keinen effekt.

Später gibst Du den Text über einen Stream aus, ohne einen Zeichensatz anzugeben.
Dabei wird wohl der Standardzeichensatz verwendet, wobei ich nicht genau weiß, wie Java diesen bestimmt.
Du solltest also entweder direkt einen Stream zur Ausgabe verwenden oder bei der Ausgabe den Zeichensatz angeben.
Ersteres ist auch schon deshalb sinnvoll, weil serialisieren in einen String nur unnötig Arbeitsspeicher benötigt.

Grüße

Daniel