Servlet-Applet-Kommunikation: Umlaute im String

Charly81

Grünschnabel
Servlet-Applet-Kommunikation: Umlaute im übergebenen String werden verändert

Hallo,
ich habe ein JApplet welches über eine HttpURLConnection ein Servlet aufruft und diesem diverse Parameter übergibt.
Mit diesen Parametern liest das Servlet dann entsprechend Daten aus einer mySQL-Datenbank aus und setzt mir aus den Daten des ResultSets einen String zusammen, den ich dann komplett an das aufrufende Applet zurückschicken möchte.
Der String hat die Form von HTML-Code
(also z.B.:"<html><body>...abcdef...</body></html>"), da ich ihn im JApplet in ein JEditorPane einfügen möchte.
Das Problem dabei ist, das der String natürlich auch Umlaute und Sonderzeichen enthält und diese vor dem Abschicken zum JApplet auch noch korrekt in der Konsole dargestellt werden.
Wenn ich diesen String dann jedoch im JApplet auslese (auch schon bevor ich ihn in das JEditorPane einfüge!), sind die Umlaute und Sonderzeichen verändert worden.

Ich denke das Problem liegt an den Input-/Output-Streams die ich zum Datentransfer verwende und auf deren Gebiet ich nicht so bewandert bin.
Muß ich irgendwo noch explizit einen Zeichensatz / charSet angeben, oder irgendwie das Encoding anpassen?

Wäre um jede Hilfe dankbar!
Hier der relevante Code:

Applet:
...
Vector selectedRows;
URL url= newURL("http://192.168.0.109:8080/meetings/ReportSelectedMeetingTopsServlet");
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setRequestMethod("POST");
conn.setUseCaches(false);
conn.setDoOutput (true);
conn.setDoInput (true);
ObjectOutputStream out =
new ObjectOutputStream(conn.getOutputStream());
out.writeObject(selectedRows);
out.flush(); out.close();

//Einlesen der Servlet-Daten
ObjectInputStream in=
new ObjectInputStream(conn.getInputStream());
String html = (String)in.readObject();
.......
Servlet:
...
String htmlStatement;

ObjectOutputStream outputToApplet =
new ObjectOutputStream(response.getOutputStream());

outputToApplet.writeObject(htmlStatement);
outputToApplet.flush();
outputToApplet.close();


Ich hoffe das war jetzt nicht zuviel überflüssiger Code :)!
Gruß Charly
 
Zuletzt bearbeitet:
Hallo, erstmal danke für die Antwort!

Hab aber jetzt rausgefunden, dass das Problem gar nicht an den Streams oder einem evtl. fehlenden Encoding liegt:
Es ist halt einfach so, dass die (Windows-)Konsole die codepage 850 voranstellt und die nicht mit dem gewünschten ISO-Zeichensatz, den das Applet zur Darstellung verwendet, übereinstimmt.

D.h.:
Wenn ich am Server per INSERT-Befehl in der mySQL-Konsole (=Windows-Konsole) einen Umlaut in die DB geschrieben habe, so wurde der bei einem SELECT-Befehl natürlich auch korrekt in der Konsole ausgegeben.
Da die Konsole aber die Codepage 850 voranstellt, wurde dieser Umlaut beim Auslesen am Client-Applet , welches den ISO-8859-1-Zeichensatz verwendet als ein anderes Zeichen dargestellt.

Das kleine pdf-Dokument der folgenden Adresse zeigt was ich meine:
www.oberstufeninformatik.de/info12/Zeichen.pdf

Das heißt eigentlich nur dass das Problem das ich hatte,eigentlich gar keines ist, ich hatte mich nur zu sehr auf die Ausgabe der Konsole fixiert.
Wenn ich nämlich von meinem Applet über das Servlet ein Wort mit Umlaut (z.B."für ") in die DB schreibe, so steht bei einer Abfrage in der Konsole für den Umlaut der entsprechende Wert des Zeichensatzes/der codepage 850 (also in diesem Fall : " f³r " ) in der DB.
Lese ich nun wieder über das Applet/Servlet diesen Wert aus, so zeigt mir das Applet den Umlaut wieder korrekt entsprechend des Zeichensatzes ISO-8859-1 an.

Trotzdem danke fürs Gedanken machen!
Gruß Charly
 

Neue Beiträge

Zurück