如何使用 (useUnicode=yes characterEncoding=UTF-8 ) 与 DBCP

2022-09-02 02:35:41

我试图将阿拉伯字母插入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"/>

如何在DBCP配置中设置UTF-8编码或如何使用(useUnicode=yes字符编码=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

我尝试了以下方法,它在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

推荐