Java 如何将(useUnicode=yes characterEncoding=UTF-8)与DBCP一起使用

Java 如何将(useUnicode=yes characterEncoding=UTF-8)与DBCP一起使用,java,mysql,apache-commons-dbcp,Java,Mysql,Apache Commons Dbcp,我试图将阿拉伯语字母插入mysql数据库,但它只存储“?”。我正在使用DBCP连接mysql数据库,以下是数据源: <Resource name="jdbc/view_db" auth="Container" type="javax.sql.DataSource" username="root" password="" autoReconnect="true"

我试图将阿拉伯语字母插入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)?

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

url="jdbc:mysql://localhost/view_db?useUnicode=yes&amp;characterEncoding=utf8"
根据需要,将参数
connectionProperties
与值
[propertyName=propertyValue;]*
一起使用,因此在您的情况下,应该使用如下内容:

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

(注意结尾处的
!)

我尝试了以下方法,并在Debian Wheezy box上使用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

只是检查一下,您在创建MySQL数据库时是否指定了默认字符集utf8?是的,我指定了字符集utf8,手动输入时它接受阿拉伯字母,但是,当我试图从jsp文件插入它们时,它不起作用。我指定了,但它说“无法在localhost config的\Servers\Tomcat v7.0服务器上加载Tomcat服务器配置。配置可能已损坏或不完整。对实体“characterEncoding”的引用必须以“;”结尾分隔符。“这是什么意思?您需要使用&;in-useUnicode=yes&;characterEncoding=utf8。”