У меня есть веб-приложение в jsf2.0 на Tomcat 6 и MySQL. Я использую специальные символы, например, «ąśżźć». Я могу читать данные из MySQL и правильно показывать их на веб-странице. Проблема возникает, когда пользователь заполняет форму любым специальным символом, после чего в MySQL символы заменяются на «?». Но если я использую инструмент MySQL Workbench и сделаю вставку в БД, все будет работать, и специальные символы будут отображаться правильно на веб-странице.
Моя конфигурация:
JSF - UTF-8 (for response and request character encoding)
MySQL columns are configured to use UTF-8, example: DESCRIPTION varchar(100) CHARACTER SET utf8 null
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
И character_set_server = latin1 доставляет мне большие проблемы.
Когда это UTF-8, все в порядке, в latin1 нет.
Моя хостинговая компания не изменит настройки MySQL, поэтому latin1 остается: - (.
Как я могу обойти это?
Я уже пробовал много решений, таких как создание фильтра, преобразование с использованием Charset и String.getBytes (). У меня заканчиваются идеи.
Для подключения я использую JDBC от org.apache.tomcat.jdbc.pool.DataSource.