MySQL кодировка символов - PullRequest
       5

MySQL кодировка символов

3 голосов
/ 20 ноября 2011

У меня есть сервер 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 */

Ответы [ 2 ]

1 голос
/ 20 ноября 2011

Свойства соединения, установленные через компонент пула соединений DBCP, не рассматривались как добавление их к URL-адресу JDBC.

Итак, добавление ?characterEncoding=UTF-8&useUnicode=true к URL-адресу соединения помогло мне.

0 голосов
/ 20 ноября 2011

Если вы используете Eclipe, проверили ли вы кодировку:

  • Окно -> Предпочтения -> Общие -> Рабочая область
  • Щелкните правой кнопкой мыши на проекте -> Свойство ->ресурс

может поменять его на UTF-8.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...