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