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

sol*_*lid 22 java mysql apache-commons-dbcp

我试图将阿拉伯字母插入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"/>
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*eel 35

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

      driverClassName="com.mysql.jdbc.Driver"
      url="jdbc:mysql://localhost/view_db"
      connectionProperties="useUnicode=yes;characterEncoding=utf8;"
      maxActive="50"
Run Code Online (Sandbox Code Playgroud)

(注意结束;!)


Mon*_*mad 10

我尝试了以下内容,它在Debian Wheezy框中使用tomcat 7.0.40和MySQL 5.5对我有用:

url="jdbc:mysql://localhost:3306/mydb?useUnicode=true&amp;characterEncoding=utf8" 
Run Code Online (Sandbox Code Playgroud)

请注意,&必须表示为&

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

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8
Run Code Online (Sandbox Code Playgroud)


Sla*_*hin 7

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

url="jdbc:mysql://localhost/view_db?useUnicode=yes&amp;characterEncoding=utf8"
Run Code Online (Sandbox Code Playgroud)

  • 你需要使用&amp; in useUnicode = yes&amp; characterEncoding = utf8 (2认同)