Wie funktioniert URIEncoding = "UTF-8" Arbeit?
Wenn ich den tomcat source code an http://grepcode.com/file/repo1.maven.org/maven2/org.apache.tomcat/tomcat-catalina/7.0.0/org/apache/catalina/connector/Request.java#Request.parseParameters%28%29
Ich kann nicht finden, wo zum festlegen der Codierung für die queryString-die kommt von der get-Methode und wie funktioniert die Konfiguration URIEncoding="UTF-8"
im server.xml
Arbeit, die in dieser Methode.
- Webserver sollte nicht utf-8 aware. Ihre Anwendung sollte sich dessen bewusst sein.
- Die
URIEncoding
parameter konfiguriert den servlet-container, die nicht den Webserver selbst. Und da der servlet container ist verantwortlich für die Dekodierung der query-string und Aufteilung in separate Parameter müssen Sie korrekt konfiguriert sein.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
URIEncoding
parameter ist das, was du bist suchen für. Es setzt die Zeichenkodierung, die verwendet werden, wenn URI Dekodieren der query-string.Verwenden Sie es in
server.xml
als ein Attribut desConnector
Einheit.Wenn erfolgreich es in der Vergangenheit.
HTTPServletRequest.getRequestURI
.Aber es sagtReturns the part of this request's URL from the protocol name up to the query string in the first line of the HTTP request. The web container does not decode this String.
.Es scheint zu sagen, dass URI sich nicht enthalten query-string.Erste, verwenden Sie eine neuere version von Tomcat. 7.0.0 ist Jahre alt: Request.java von Tomcat 7.0.34
Zweite, die
parseParameters
Methode nicht die Kodierung: es holt die Kodierung wurde von anderen Komponenten. Einige Orte, an denen die content-encoding könnte festgelegt wurden:Wenn Sie nur wollen, um die URI-Codierung auf UTF-8, bedingungslos auf Ihrer Website, dann verwenden Sie einfach die
URIEncoding
Attribut in Ihrem<Connector>
.Die direkte Antwort auf deine Frage ist, dass server.xml's
URIEncoding
- Attribut nicht funktioniert bei dieser Methode: es anderswo auch funktioniert.