Se não estou enganado, em cinco anos trabalhando como analista de sistemas, foi a primeira vez que me deparei com um problema de encodificação "UTF-8".
Tentei resolver o problema de diversas maneiras:
O projeto esta em Struts 1.3.8, o primeiro passo foi verificar a resposta da minha requisição.
request.getParameter("param")
new String((request.getParameter("param").getBytes(), "UTF-8")
new String((request.getParameter("param").getBytes(), "ISO-8859-1")
E confirmei minhas suspeitas, a String chegava na action do struts com os valores errados e não achei maneiras de converte-los.
Verifiquei as JSP's e as definições de encode estavam corretas:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
Em seguida, verifiquei um dos arquivos de configuração do Tomcat o "server.xml":
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
E pra variar um pouco, encontrei a solução no site do GUJ: implementar um filtro do Spring.
Após adicionar algumas linhas ao "pom.xml" e ao "web.xml":
"pom.xml"
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
</dependency>
"web.xml"
<filter>
<filter-name>charsetFilter</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>charsetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Testei em diversas rotinas do aplicativo e todos os problemas com encodificação e acentos estavam resolvidos.
Nenhum comentário:
Postar um comentário