Konfigurieren von Tomcat 5.5 und UTF-8 Codierung aller sendRedirect() Weiterleitungen?
Einer Anforderung an das Produkt, das wir bauen, ist, dass Ihre URL-Endpunkte sind semantisch sinnvoll, die Nutzer in Ihrer Muttersprache. Das bedeutet, wir müssen in UTF-8 codierte URLs unterstützen jedes alphabet unter der Sonne.
Wir möchte auch nicht sorgen zu müssen-installation Konfiguration Dokumentation für jede Anwendung die server und die version, die wir unterstützen, so wäre es schön, wenn wir erreichen könnten, dieses in-code. Möglicherweise ist dies nicht möglich, da durch die Zeit, die das Servlet hat die Anfrage erhalten, wurde es so codiert auf dem App-server, etc.
Habe ich bekommen, diese funktioniert (für meine ersten Anwendungsfall mit ISO-Latin-non-US-ASCII-Zeichen) von der Neueinrichtung von request-Pfad info:
String pathInfoEncoded = new String(httpServletRequest.getPathInfo().getBytes(), "UTF-8");
und diese dann analysieren.
Aber das funktioniert nicht, nach einer Umlenkung aus einem POST ein GET mit sendRedirect(). Die Anfrage ist Weg kommt bereits geflohen (also ö ist kodiert als %F6) und meine Methode oben nicht funktioniert.
Also ich denke, meine Frage ist, werde ich über das alles falsch? Und wenn ja, was ist das Gegenmittel für meine Unwissenheit? 🙂
Update : die Lösung gefunden. Das problem ist, dass das Servlet-API hat einige seltsame Verhalten mit Bezug auf die URL-Codierung vor dem senden der Umleitung. Sie müssen die URL-Codierung (Schutz der UTF-8-Zeichen), BEVOR Sie anrufen sendRedirect(). Die encodeRedirectURL () - Methode funktioniert nicht für Sie tun.
Diese Seite befasst sich mit: http://www.whirlycott.com/phil/2005/05/11/building-j2ee-web-applications-with-utf-8-support/
InformationsquelleAutor ubermensch | 2009-05-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein paar Dinge zu untersuchen und zu Experimentieren mit:
E. g.:
E. g.:
Nichts Versprechen, aber das würde ich ausprobieren, wenn es nach mir ginge. 🙂
InformationsquelleAutor Stu Thompson
die Lösung gefunden. Das problem ist, dass das Servlet-API hat einige seltsame Verhalten mit Bezug auf die URL-Codierung vor dem senden der Umleitung. Sie müssen die URL-Codierung (Schutz der UTF-8-Zeichen), BEVOR Sie anrufen sendRedirect(). Die encodeRedirectURL () - Methode funktioniert nicht für Sie tun.
Diese Seite befasst sich mit: http://www.whirlycott.com/phil/2005/05/11/building-j2ee-web-applications-with-utf-8-support/
InformationsquelleAutor ubermensch
Wir haben die gleiche situation hier, also unser Produkt ist auch erforderlich, um zu zeigen, aussagekräftige URLs, die den Anwender in potenziell jede Sprache auf der Erde. Alle unsere Werkzeuge und Techniken unterstützen UTF-8, also kein problem. Die Flucht der UTF-8-Zeichen technisch funktioniert, aber im IE (7, 8) zeigt die hässlich aussehende entkommen URLs in der Erwägung, dass Firefox unescapes Sie und zeigt schönen urls, D. H. '/français/Banane.html " werden angezeigt im IE als '/fran%C3%A7ais/Banane.html'.
GET nach POST /umleiten nach Formular sendet nicht an allen funktionierte, weder das senden von UTF-8-urls noch UTF-8-Escape-urls. Wir haben auch versucht, die Verwendung von XML-style-numerische Entität, Codierung, ohne Erfolg.
Jedoch, fanden wir schließlich einen Weg, um erfolgreich zu Weiterleitung nach einem POST: Codierung der UTF-8-string Byte für Byte untersucht mit ISO-8859-1. Keiner von uns versteht wirklich, wie das funktionieren kann sowieso (wie kann der browser wissen, wie zu entschlüsseln, die, wie die Anzahl der bytes pro utf-8-Zeichen kann variieren und wie funktioniert der browser weiß, es war ursprünglich utf-8?) , aber es funktioniert.
Hier ein einfaches servlet, um zu versuchen, heraus:
Zur Zielseite der Weiterleitung kopieren und fügen Sie jede beliebige Sprache url z.B. aus der wikipedia in eine utf-8-kodiert (ohne BOM!) Datei ein und speichern Sie im Verzeichnis WEB-INF. In unserem Beispiel nahmen wir eine russische url (http://ru.wikipedia.org/wiki/Заглавная_страница)
und speichern Sie in einer Datei namens 'ru_url.txt'.
Haben wir eine einfache SpringMVC-Anwendung mapping *.abc-url für das test-servlet.
Nun, wenn Sie starten Sie die app und geben Sie etwas wie 'localhost:8080/springmvctest/ein.abc', die Sie umgeleitet werden soll, auf der Russischen wikipedia-Seite und der browser (IE und Firefox, Safari oder andere vielleicht nicht), sollte zeigen eine schöne utf-8-codiert, native Russian url.
InformationsquelleAutor