2012-01-18 21 views
5

Si tengo que configurar la misma codificación para todas las aplicaciones desplegadas en una instancia de Tomcat, puedo editar server.xml y añadir una sección como esta:¿Cómo se configura URIEncoding para una determinada aplicación web?

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

¿Hay una manera de especificar la codificación para una determinada aplicación? (tal vez en su web.xml o en otro lugar)?

Respuesta

2

Hasta donde yo sé que web.xml no permite lo que quieres, entonces te sugiero las siguientes maneras.

  1. conjunto que por página (por ejemplo, para JSP <%@page pageEncoding="UTF-8" %>)
  2. filtro Uso HTTP para ajustar la codificación. En este caso, no tiene que configurarlo para cada página por separado.
  3. Si está utilizando el marco web intente utilizar las herramientas que proporciona. Por ejemplo, para Struts puede definir la codificación en la definición de la plantilla.
5

Si utiliza Spring MVC, puede utilizar CharacterEncodingFilter en web.xml así:

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

Si no es así, tiene que escribir un filtro que hace algo como:

httpRequest.setCharacterEncoding("UTF-8") 

EDITAR:

Usted necesita para especificar useBodyEncodingForURI="true" en Tomcat 5+ para este filtro sea eficaz:

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