2012-01-18 64 views
5

如果我需要为部署在Tomcat实例的所有应用程序相同的编码,我可以编辑server.xml并添加这样一段:如何为某个Web应用程序配置URIEncoding?

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

是否有一定的应用程序指定的编码方式? (可能在其web.xml或其他地方)?

回答

2

据我所知web.xml不允许你想要的,所以我会建议以下几种方式。

  1. 集它每页(例如,用于JSP <%@page pageEncoding="UTF-8" %>
  2. 使用HTTP过滤器来设置编码。在这种情况下,您不必为每个页面单独设置它。
  3. 如果您使用的是Web框架,请尝试使用它提供的工具。例如,对于Struts,您可以在模板定义中定义编码。
5

如果你使用Spring MVC的,你可以在web.xml中使用CharacterEncodingFilter这样的:

<filter> 
    <filter-name>encodingFilter</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> 
</filter> 
<filter-mapping> 
    <filter-name>encodingFilter</filter-name> 
    <servlet-name>my-spring-dispatcher-servlet</servlet-name> 
</filter-mapping> 

如果没有,你需要编写一个过滤器,做类似:

httpRequest.setCharacterEncoding("UTF-8") 

编辑:

确实需要给Tomcat 5+指定useBodyEncodingForURI="true"此过滤器是有效的:

<Connector port="8081" protocol="HTTP/1.1" 
    connectionTimeout="20000" 
    redirectPort="8443" 
    useBodyEncodingForURI="true" /> 
相关问题