Как использовать (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)?
Ответы
Ответ 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&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&characterEncoding=utf8"