【问题标题】:Incorrect encoding when using @PathVariable in Spring Framework在 Spring Framework 中使用 @PathVariable 时编码不正确
【发布时间】:2014-05-11 20:50:07
【问题描述】:

在我的控制器中,我有这个方法:

@RequestMapping(value = "/find-by-company-name/{companyName}", method = RequestMethod.GET)
public CustomerDto findByCompanyName(@PathVariable String companyName){
    return customerService.findByCompanyName(companyName);
}

当我使用 /find-by-company-name/Mestská%20knižnica 这样的 URL 时,我会在 companyName 变量中得到 Mestsk?? kni??nica

这个问题有解决办法吗?

web.xml 我使用:

<filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-     class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

【问题讨论】:

  • This question在底层服务为Tomcat时有解决方案。如果您使用的是 Tomcat,那么您的问题是重复的 =),如果您使用的是其他服务器/应用程序容器,那么您应该看看是否有某种方法可以配置 URI 编码。

标签: java spring tomcat spring-mvc


【解决方案1】:

解决方案是将URIEncoding="UTF-8" 添加到server.xml 配置文件中,如下所示:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" 
           URIEncoding="UTF-8" />

【讨论】:

    【解决方案2】:

    您的 URL 应该被编码,就像空格 %20 一样。然后编码就OK了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-30
      • 2014-03-15
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      • 2021-06-15
      • 1970-01-01
      • 2012-01-07
      相关资源
      最近更新 更多