2012-01-18 30 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" /> 
相關問題