Hallo allerseits,
bin neu hier und ich hoffe ich bin an der richtigen Stelle gelandet. Wenn nicht, bitte um Nachsicht und Verschieben
Ich arbeite gerade an meinem Abschlußprojekt für meine Ausbildung und habe ein Problem, wäre bombe wenn jemand nen Lösungsansatz oder ne Idee hätte.
Also im Groben bau ich ne Schnittstelle zwischen ner MySQL-Datenbank und nem Servlet. Die Datenbank ist via EJB3 auf verschiedene Objekte abgebildet und die Kommunikation zwischen Geschätslogik (SQL-Abfragen) und Servlet findet über ein Remote-Interface statt.
Das Servlet übernimmt die Parameter des GET-Requests aus der übergebenen Request-Variable und leitet sie entsprechend weiter.
Das funktioniert auch alles soweit, nur habe ich Probleme mit der Zeichenkodierung innerhalb der Request-Parameter.
In dem Servlet werden auch Links erzeugt, die wiederum einen neuen Request darstellen, dort enkodiere ich die Parameter mittels
Dieser String wird auch korrekt auf der HTML-Seite ausgegeben (Bsp: %C3%B6 -> ö)
Nun dachte ich beim Servlet einfach
verwenden zu können um die Parameter wieder zu dekodieren, das klappte aber nicht, es kamen nur Strings in der Form "ö" (ö-> Ausgabe der Konsole) an, mit der diese Methode logischerweise nichts anfangen kann.
Habe dann im Internet eine Möglichkeit gefunden, es klappte dann mittels
Nun mein aktuelles Problem: Habe hier auf Arbeit eine Entwicklungszone mit Solaris als Betriebssystem. Dort ist die gleiche Jboss-Version installiert und auch die gleiche Version meines Projekts deployed wie auf meinem lokalen Rechner. Dort klappt das alles wieder gar nicht, es kommt für jegliche Sonderzeichen nur der String "" an. Habe schon sämtliches versucht und finde auch im Netz irgendwie nichts was mir weiterhelfen könnte. Hat jemand von euch da eine Idee? Das Problem ist nämlich, dass das Projekt wenn es fertig ist auf genau so einer Zone laufen soll, also müsst ich das irgendwie hinbekommen.
Wenn ich in der server.xml meines Servers beim Connector-Tag 'URIEncoding="UTF-8"' hinzufüge, brauch ich den Parameter bei mir lokal gar nicht mehr dekodieren und auf der Zone kommt nur noch ein ? an.
Was vielleicht auch noch hilfreich ist, verwende die Bibliothek Apache Commons Lang (org.apache.commons.lang.StringEscapeUtils.escapeHtml()) zum escapen der Strings, und diese liefert mir trotz des ? im übergebenen String das richtige Zeichen zurück (Bsp: ü ) Also muss in dem String ja irgendwie das richtige Zeichen versteckt sein.
unescapeHtml(escapeHtml(string)) klappt leider nicht, liefert wieder das Fragezeichen.
Sehr merkwürdig das alles, naja würde mich wie gesagt freuen wenn jemand ne Idee hat
beste Grüße
bin neu hier und ich hoffe ich bin an der richtigen Stelle gelandet. Wenn nicht, bitte um Nachsicht und Verschieben

Ich arbeite gerade an meinem Abschlußprojekt für meine Ausbildung und habe ein Problem, wäre bombe wenn jemand nen Lösungsansatz oder ne Idee hätte.
Also im Groben bau ich ne Schnittstelle zwischen ner MySQL-Datenbank und nem Servlet. Die Datenbank ist via EJB3 auf verschiedene Objekte abgebildet und die Kommunikation zwischen Geschätslogik (SQL-Abfragen) und Servlet findet über ein Remote-Interface statt.
Das Servlet übernimmt die Parameter des GET-Requests aus der übergebenen Request-Variable und leitet sie entsprechend weiter.
Das funktioniert auch alles soweit, nur habe ich Probleme mit der Zeichenkodierung innerhalb der Request-Parameter.
In dem Servlet werden auch Links erzeugt, die wiederum einen neuen Request darstellen, dort enkodiere ich die Parameter mittels
Code:
java.net.URLEncoder.encode(String string, "UTF-8");
Dieser String wird auch korrekt auf der HTML-Seite ausgegeben (Bsp: %C3%B6 -> ö)
Nun dachte ich beim Servlet einfach
Code:
java.net.URLDecoder.decode(String string, String "UTF-8");
verwenden zu können um die Parameter wieder zu dekodieren, das klappte aber nicht, es kamen nur Strings in der Form "ö" (ö-> Ausgabe der Konsole) an, mit der diese Methode logischerweise nichts anfangen kann.
Habe dann im Internet eine Möglichkeit gefunden, es klappte dann mittels
Code:
value = new String(value.getBytes("ISO-8859-1"));
Nun mein aktuelles Problem: Habe hier auf Arbeit eine Entwicklungszone mit Solaris als Betriebssystem. Dort ist die gleiche Jboss-Version installiert und auch die gleiche Version meines Projekts deployed wie auf meinem lokalen Rechner. Dort klappt das alles wieder gar nicht, es kommt für jegliche Sonderzeichen nur der String "" an. Habe schon sämtliches versucht und finde auch im Netz irgendwie nichts was mir weiterhelfen könnte. Hat jemand von euch da eine Idee? Das Problem ist nämlich, dass das Projekt wenn es fertig ist auf genau so einer Zone laufen soll, also müsst ich das irgendwie hinbekommen.
Wenn ich in der server.xml meines Servers beim Connector-Tag 'URIEncoding="UTF-8"' hinzufüge, brauch ich den Parameter bei mir lokal gar nicht mehr dekodieren und auf der Zone kommt nur noch ein ? an.
Was vielleicht auch noch hilfreich ist, verwende die Bibliothek Apache Commons Lang (org.apache.commons.lang.StringEscapeUtils.escapeHtml()) zum escapen der Strings, und diese liefert mir trotz des ? im übergebenen String das richtige Zeichen zurück (Bsp: ü ) Also muss in dem String ja irgendwie das richtige Zeichen versteckt sein.
unescapeHtml(escapeHtml(string)) klappt leider nicht, liefert wieder das Fragezeichen.
Sehr merkwürdig das alles, naja würde mich wie gesagt freuen wenn jemand ne Idee hat

beste Grüße