Я работаю в приложении Spring MVC + Hibernate, использую MySQL (версия 5.0.51a) с движком InnoDB.
Проблема возникает, когда я отправляю форму с кириллическими символами.
В результате база данных содержит бессмысленные символы в неизвестной кодировке.
Все страницы JSP, база данных (+ таблицы и поля), созданные с использованием UTF-8.
Конфигурация Hibernate также содержит свойство, которое устанавливает кодировку в UTF-8.
Я решил эту проблему, создав фильтр, который кодирует содержимое запроса с помощью UTF-8.
Примерный код:
…
encoding = "UTF-8";
request.setCharacterEncoding(encoding);
chain.doFilter(request, response);
…
Но приложение заметно замедляет работу.
Интересно то, что выполнение запроса вставки непосредственно из приложения (т. Е. Запуска из Eclipse как Java-приложения) работает отлично.
UPD.
Насколько я понял, использование фильтра - единственное рабочее решение в моем случае.
Я не знал о стандартном CharacterEncodingFilter. Используйте это сейчас, работает очень хорошо!
<filter>
<filter-name>CharacterEncodingFilter</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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>