Подтвердить что ты не робот

Как использовать (useUnicode = yes characterEncoding = UTF-8) с помощью DBCP

Я пытаюсь вставить арабское письмо в базу данных mysql, но он хранит только "????". Я использую DBCP для подключения к mysql databse, вот источник данных:

          <Resource name="jdbc/view_db" 
      auth="Container"
          type="javax.sql.DataSource"
          username="root" 
          password=""
          autoReconnect="true"
          testOnBorrow="true"
          validationQuery = "SELECT 1"
          driverClassName="com.mysql.jdbc.Driver"
          url="jdbc:mysql://localhost/view_db"
          maxActive="50"
          maxIdle="10"/>

как настроить кодировку UTF-8 с помощью конфигурации DBCP или как использовать (useUnicode = yes characterEncoding = UTF-8)?

4b9b3361

Ответ 1

В соответствии с документацией DBCP вам нужно использовать параметр connectionProperties со значением [propertyName=propertyValue;]*, поэтому в вашем случае вы должны использовать что-то вроде:

      driverClassName="com.mysql.jdbc.Driver"
      url="jdbc:mysql://localhost/view_db"
      connectionProperties="useUnicode=yes;characterEncoding=utf8;"
      maxActive="50"

(обратите внимание на закрытие ;!)

Ответ 2

Я попробовал следующее, и он работал у меня, используя tomcat 7.0.40 и MySQL 5.5 в поле Debian Wheezy:

url="jdbc:mysql://localhost:3306/mydb?useUnicode=true&amp;characterEncoding=utf8" 

Обратите внимание, что и должно быть представлено как &

также убедитесь, что ваш my.cnf для вашего сервера mysql имеет следующие строки:

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

Ответ 3

Укажите его в параметре url, например:

url="jdbc:mysql://localhost/view_db?useUnicode=yes&amp;characterEncoding=utf8"