Я застрял в большой проблеме с кодировкой на моем сайте!Я использую Spring 3, Tomcat 6 и MySQL DB.Я хочу поддерживать немецкий и чешский языки наряду с английским на своем веб-сайте, я создал все JSP в виде файлов UTF-8, и в каждый jsp я включаю следующее:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Я создал messages.properties (по умолчанию (чешский), messages_de.properties и messages_en.properties.И все они сохраняются в виде файлов UTF-8.
Я добавил следующее в 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>
И добавил следующее в мой 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" />
Я установил для атрибута useBodyEncodingForURI значение true в элементе server.xml в разделе:% CATALINA_HOME% / conf, также в другой раз попытался добавить вместо него URIEncoding = "UTF-8".
Я создалвсе таблицы и поля с набором символов [utf8] и коллекцией [utf8_general_ci]
Кодировка в моем браузере - UTF-8 (кстати, у меня IE8 и Firefox 3.6.3)
Когда яоткройте браузер MYSQL Query и вставьте вручную чешские или немецкие данные, они вставляются правильно, а также корректно отображаются в моем приложении.
Итак, вот список моих проблем:
По умолчанию загружается messages.properties (чешский язык), вместо этого по умолчанию загружается messages_en.properties.
В веб-форме при вводе чешских данных затемнажмите кнопку отправить, в контроллере я распечатаюданные в консоли перед тем, как сохранить их в дб, то, что печатается, неправильно с странными символами, и это точные данные, которые сохраняются в дб.
Я не знаю, гдеошибка!Почему я не могу заставить его работать, хотя я делал то, что делали люди, и работал на них!не знаю ..
Пожалуйста, помогите мне, я застрял в этой дерьмовой проблеме уже несколько дней, и она сводит меня с ума!
Заранее спасибо.