0

当我在http://grepcode.com/file/repo1.maven.org/maven2/org.apache.tomcat/tomcat-catalina/7.0.0/org/apache/catalina/connector/Request查看 tomcat 源代码时。 java#Request.parseParameters%28%29 我找不到在哪里为来自 get 方法的 queryString 设置编码,以及该方法中的配置如何URIEncoding="UTF-8"工作server.xml

4

2 回答 2

3

URIEncoding参数是您正在寻找的。它设置在 URI 解码查询字符串时要使用的字符编码。

您将其server.xml用作Connector实体的属性。

如果过去成功使用它。

于 2012-12-27T12:14:19.963 回答
1

首先,让我们使用更新版本的 Tomcat。7.0.0 已有多年历史:来自 Tomcat 7.0.34 的 Request.java

其次,该parseParameters方法不设置编码:它获取已由其他组件设置的编码。可能已设置内容编码的一些地方:

  1. 连接器的 URIEncoding(根据 HTTP RFC 默认为 ISO-8859-1 AS)
  2. 请求正文编码(来自 HTTP 请求的 Content-Type 标头)
  3. 另一个组件——可能通过查看参数的值来嗅探编码

如果您只想在您的站点上无条件地将 URI 编码设置为 UTF-8,那么只需URIEncoding使用<Connector>.

您的问题的直接答案是 server.xml 的URIEncoding属性在此方法中不起作用:它在其他地方起作用。

于 2012-12-27T22:15:21.197 回答