Проблема кодировки символов весной
Я застрял в большой проблеме с кодированием на моем сайте! Я использую 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".
Я создал все таблицы и поля с помощью charset [utf8] и collection [utf8_general_ci]
Кодировка в моем браузере UTF-8 (кстати, у меня IE8 и Firefox 3.6.3)
Когда я открываю браузер MYSQL Query и вручную вставляю чешские или немецкие данные, они вставляются правильно и корректно отображаются в моем приложении.
Итак, вот список проблем, которые у меня есть:
По умолчанию загружается messages.properties (чешский), вместо этого по умолчанию загружается messages_en.properties.
В веб-форме, когда я ввожу данные на чешском языке, а затем нажимаю «Отправить», в контроллере я распечатываю данные в консоли, прежде чем сохранить их в БД, то, что печатается, неверно, имеет странные символы, и это точные данные, которые сохраняет в БД.
Я не знаю, где ошибка! Почему я не могу заставить его работать, хотя я делал то, что делали люди, и работал на них! не знаю ..
Пожалуйста, помогите мне, я застрял в этой дерьмовой проблеме с незапамятных времен, и это сводит меня с ума!
Заранее спасибо.