2012-01-18 4 views
5

Si je dois mettre le même encodage pour toutes les applications déployées dans une instance tomcat, je peux modifier server.xml et ajouter une section comme ceci:Comment configurer URIEncoding pour une application Web donnée?

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

Y at-il un moyen de spécifier le codage pour une application? (peut-être dans son web.xml ou ailleurs)? Pour autant que je sache, web.xml n'autorise pas ce que vous voulez, alors je suggérerais les moyens suivants:

Répondre

2

  1. ensemble elle par page (par exemple pour JSP <%@page pageEncoding="UTF-8" %>)
  2. Utilisation du filtre HTTP pour définir le codage. Dans ce cas, vous n'avez pas besoin de le définir pour chaque page séparément.
  3. Si vous utilisez le framework web, essayez d'utiliser les outils qu'il fournit. Par exemple, pour Struts, vous pouvez définir l'encodage dans la définition du modèle.
5

Si vous utilisez Spring MVC, vous pouvez utiliser CharacterEncodingFilter dans web.xml comme ceci:

<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> 

Sinon, vous devez écrire un filtre qui fait quelque chose comme:

httpRequest.setCharacterEncoding("UTF-8") 

EDIT:

Vous besoin spécifier useBodyEncodingForURI="true" dans Tomcat 5+ pour ce filtre pour être efficace:

<Connector port="8081" protocol="HTTP/1.1" 
    connectionTimeout="20000" 
    redirectPort="8443" 
    useBodyEncodingForURI="true" /> 
Questions connexes