У меня проблема с кодировкой, которая сводит меня с ума. Моя сеть поддерживает как английский, так и испанский языки. Некоторые из моих таблиц (сгенерированных hibernate) имеют в качестве параметров сортировки utf8_general_ci, некоторые другие, и я не знаю почему, имеют latin1_swedish_ci. Но меня трясет то, что когда люди используют мою форму контактов и помещают в нее, например, слово с «-», мой Spring Controller берет его и отправляет мне электронное письмо, которое в порядке (я имею в виду, что оно имеет -), прежде чем сохранить данные по MySQL. Но когда я проверяю, что сохранено в MySQL (а в моей таблице контактов есть сопоставление utf8_general_ci), внутри появляются какие-то ужасные символы, заменяющие символ «ñ», например Альваро Нежес Кабеса де Вана. Продолжая, на страницах jsp объявлен UTF-8, таблица - utf8_general_ci, hbn - также объявлен utf-8:
# hibernate props
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.show.sql=true
hibernate.hbm2ddl.auto=update
hibernate.format_sql=true
# hibernate props added to fix 4bytes encoded characters
hibernate.connection.CharSet=utf8mb4
hibernate.connection.characterEncoding=utf8
hibernate.connection.useUnicode=true
Но все вместе работает не так, как ожидалось.
Любая помощь будет приветствоваться.
РЕШЕНИЕ: по крайней мере для меня единственным исправлением было добавить фильтр в мой файл web.xml. Я почти уверен, что есть более эффективные способы решения проблем кодирования более элегантным способом, но в моем случае все было настроено для использования UTF-8, и парто моих форм работает хорошо, но другие показывают, что Альвар Нуньес Кабеса де Вака - Альвар Нежен Кабеса де Вака.
Фильтр:
<filter>
<filter-name>encodingFilter</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>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Как и в этом посте Spring MVC UTF-8 Кодировка