Problema na codificação de caracteres
Estou com um grande problema de codificação no meu site! Eu uso o spring 3, o tomcat 6 e o mysql db. Desejo dar suporte ao alemão e tcheco, além do inglês no meu site, criei todos os JSPs como arquivos UTF-8 e, em cada jsp, incluo o seguinte:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Criei messages.properties (o padrão é tcheco), messages_de.properties e messages_en.properties. E todos eles são salvos como arquivos UTF-8.
Adicionei o seguinte ao web.xml:
<filter>
<filter-name>encodingFilter</filter-name>
<filterclass>
org.springframework.web.filter.CharacterEncodingFilter</filterclass>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<locale-encoding-mapping-list>
<locale-encoding-mapping>
<locale>en</locale>
<encoding>UTF-8</encoding>
</locale-encoding-mapping>
<locale-encoding-mapping>
<locale>cz</locale>
<encoding>UTF-8</encoding>
</locale-encoding-mapping>
<locale-encoding-mapping>
<locale>de</locale>
<encoding>UTF-8</encoding>
</locale-encoding-mapping>
</locale-encoding-mapping-list>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
E adicione o seguinte ao meu applicationContext.xml:
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource"
p:basenames="messages"/>
<!-- Declare the Interceptor -->
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"
p:paramName="locale" />
</mvc:interceptors>
<!-- Declare the Resolver -->
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
Defino o atributo useBodyEncodingForURI como true no elemento server.xml em:% CATALINA_HOME% / conf. Também tentei adicionar outra vez URIEncoding = "UTF-8".
Criei todas as tabelas e campos com charset [utf8] e coleção [utf8_general_ci]
A codificação no meu navegador é UTF-8 (BTW, eu tenho o IE8 e Firefox 3.6.3)
Quando abro o navegador MYSQL Query e insiro manualmente dados tchecos ou alemães, eles estão sendo inseridos corretamente e exibidos corretamente no meu aplicativo.
Então, aqui está a lista de problemas que tenho:
Por padrão, o messages.properties (tcheco) deve carregar, em vez disso, o messages_en.properties é carregado por padrão.
No formulário da Web, quando insiro dados em tcheco e clico em enviar, no Controller eu imprimo os dados no console antes de salvá-los em db, o que está sendo impresso não é correto com caracteres estranhos e esses são os dados exatos que salva em db.
Não sei onde está o erro! Por que não consigo fazê-lo funcionar, apesar de fazer o que as pessoas fizeram e trabalhar para eles! não sei ..
Por favor, me ajude, estou preso neste problema de baixa qualidade desde dias, e isso me deixa louco!
Agradeço antecipadamente.