У меня есть сервер MySQL со следующими настройками:
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
У меня есть клиент Java, который подключается к этой базе данных с помощью DBCP с этой конфигурацией:
<bean id="dsJoomla" class="hu.eutrust.wsfresh.CustomDataSource">
<property name="driverClassName" value="${joomla.db.driver}"/>
<property name="username" value="${joomla.db.user}"/>
<property name="password" value="${joomla.db.pass}"/>
<property name="url" value="${joomla.db.url}"/>
<property name="connectionProperties" value="characterEncoding=UTF-8;useUnicode=true;"/>
</bean>
Затем я выполняю где-то в коде обновление следующим образом:
template.update("insert into test (nev) values (:nev)", new MapSqlParameterSource("nev", "Árvíztűrő"));
После проверки результатов в phpMyAdmin я вижу строку:
ID NEV
2 Árvízt?r?
Символы ő и ű, не входящие в набор символов латиницы 1, неверны. Я полагаю, это потому, что символьный_сервер - латинский. Но с помощью phpMyAdmin я могу вручную отредактировать запись и ввести «Árvíztűrő», и после этого запись будет правильной. Поэтому я полагаю, что с этими настройками можно ввести желаемое значение в базу данных. Как я могу сделать это с моим клиентом Java? Как мне настроить соединение? Почему мои ő и ű символы не работают, если соединение 100% utf8?
вывод теста создания новой таблицы:
CREATE TABLE `test` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`NEV` varchar(64) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
Показать создание базы данных Joomla вывод:
CREATE DATABASE `joomla` /*!40100 DEFAULT CHARACTER SET utf8 */