21

我正在尝试将阿拉伯字母插入 mysql 数据库,但它只存储“????”。我正在使用 DBCP 连接 mysql 数据库,这里是数据源:

          <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"/>

如何在 DBCP 配置中设置 UTF-8 编码或如何使用(useUnicode=yes characterEncoding=UTF-8)?

4

3 回答 3

36

根据DBCP 文档,您需要将参数connectionProperties与 value 一起使用[propertyName=propertyValue;]*,因此在您的情况下,您应该使用以下内容:

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

(注意结束;!)

于 2012-11-13T11:46:36.737 回答
11

我尝试了以下方法,它在 Debian Wheezy 盒子上使用 tomcat 7.0.40 和 MySQL 5.5 对我有用:

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

注意 & 必须表示为 &

还要确保您的 mysql 服务器的 my.cnf 具有以下几行:

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8
于 2013-09-11T15:43:52.520 回答
7

在参数中指定它url,如下所示:

url="jdbc:mysql://localhost/view_db?useUnicode=yes&amp;characterEncoding=utf8"
于 2012-11-13T11:28:55.370 回答