Configuración de Tomcat para trabajar con UTF8

Me ha vuelto a pasar… otra vez! La configuración por defecto de Apache Tomcat 6 me ha dado problemas con la codificación de carácteres.

encoding

Mientras que en el servidor embebido de Grails funciona todo perfectamente con UTF8, siempre que no la líes gracias a a causa tu IDE/editor favorito, claro. Al poner en una instalación de tomcat el war que quería desplegar, los carácteres no-ascii(eñes, tildes, etc) no se pasaban con la codificación correcta cuando los parámetros iban por GET.

La solución es bastante simple.

A la línea del server.xml de la configuración de nuestro/s tomcat/s:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>

Añadirle URIEncoding=”UTF-8″, para que quede algo como esto:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>

Y ya :)

5 comentarios en “Configuración de Tomcat para trabajar con UTF8

  1. Algo muy util para proyectos Spring en los que vayas a usar ese encoding es usar tambien el EncodingFilter en el web.xml, de esa manera te aseguras de que todo lo que se escriba por la response será con ese encoding tambien y no te encontraras sorpresas luego ni tendras que estar usando las directivas de pageEncoding y charset por todas las vistas (JSP, TIles, etc)
    Algo que hay que tener en cuenta es poner ese filtro el primero de todos los filtros en el web.xml:

    —————————————————————————

    encodingFilter
    org.springframework.web.filter.CharacterEncodingFilter

    encoding
    UTF-8

    forceEncoding
    true

    encodingFilter
    /*

    ————————————————————–
    Saludos

  2. Vaya… no ha pillado las marcas XML

  3. mmm… el wordpress habrá escapado el marcado :S

    Tengo mis dudas de si ese filtro soluciona este problema, que por otro lado supongo que ya lo tendrán puesto para que Grails lo use de serie. Mi problema no era del response en sí, que lo maneja el mismo Grails y era siempre utf8, lo que me daba problemas era que el tomcat no manejaba bien los parámetros que le llegaban por GET.

    Me explico, como comentaba en el post, se comporta de forma diferente ejecutando el “run-app” con el tomcat embebido que desplegado en un war sobre un tomcat “normal”. Por eso entendí que era un problema de configuración de tomcat y terminé encontrando esa solución :)

  4. Muchas gracias!!, justo es lo que me estaba pasando, al arrancar con run-app (incluso en la máquina de producción), funcionaba correctamente, pero al hacerlo con el tomcat no. Ha sido poner el parámetro y listo, todo perfecto.

    Gracias de nuevo Dani :-)

    Saludos, Iván.

  5. Otro agradecido, Dani. Tras darme unos trastazos sin saber lo que estaba pasando, a dos dias de entrar en produccion, he encontrado esta solución. :-)

    Thank you!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>