Ich baue eine Site, die zu Analysezwecken eine URL an ein Servlet sendet. Auf der Client-Seite sende ich die URL als einen Parameter, der codiert ist. Zum Beispiel ...
%Vor%Auf der Serverseite habe ich mein Servlet den Parameter so anfordern ...
%Vor%Was ich erhalte ist eine decodierte Zeichenfolge: Ссылка . So weit, so gut - das funktioniert wie erwartet ... die meiste Zeit.
Das Problem tritt auf, wenn ein URL-Parameter eigene Parameter enthält ...
%Vor%Alles ist gut auf der Client-Site, aber in meinem Servlet, wenn ich den Parameter bekomme, erhalte ich nur einen Teil des URL-Parameters!
%Vor%Es hat den zweiten Parameter aus meinem Eingabe-URL-Parameter gelöscht! Ich kodiere definitiv den URL-Parameter, bevor ich ihn dem Server übermittle ... was ist los?
Ich kann Ihr Problem auf Tomcat 6.0.29 nicht reproduzieren. Es ist mehr in der Materie. Vielleicht ein Filter in der Kette, der etwas mit dem Anfrageobjekt macht?
Wie auch immer, hier ist ein SSCCE im Stil einer einzelnen JSP:
%Vor%Kopieren Sie es nicht und klicken Sie auf den Link. Genau hier sehe ich folgendes Ergebnis:
klicken Sie hier
URL: Ссылка
Das gleiche ist reproduzierbar mit einem einfachen Servlet wie diesem, das direkt von der Browser-Adressleiste aufgerufen wird:
%Vor% Tomcat ist übrigens mit URIEncoding="UTF-8"
im HTTP-Connector konfiguriert, aber selbst mit ISO-8859-1
(was der Standard ist) ist das Verhalten - wie in diesem speziellen Fall zu erwarten - dasselbe.
Tags und Links java url parameters servlets encode