web-dev-qa-db-fra.com

comment utiliser (useUnicode = yes characterEncoding = UTF-8) avec DBCP

J'essaie d'insérer une lettre arabe dans la base de données mysql, mais elle ne stocke que "????". J'utilise DBCP pour me connecter avec la base de données mysql, voici la source de données:

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

comment installer l'encodage UTF-8 avec dans la configuration DBCP ou comment utiliser (useUnicode = yes characterEncoding = UTF-8)?

22
solid

Selon la documentation DBCP vous devez utiliser le paramètre connectionProperties avec la valeur [propertyName=propertyValue;]*, dans votre cas, vous devez utiliser quelque chose comme:

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

(notez la fermeture ;!)

35
Mark Rotteveel

J'ai essayé ce qui suit et cela a fonctionné pour moi en utilisant Tomcat 7.0.40 et MySQL 5.5 sur Debian Wheezy box:

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

Notez qu'il doit être représenté par amp;

assurez-vous également que votre my.cnf pour votre serveur mysql a les lignes suivantes:

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8
10
Moneim Emad

Spécifiez-le dans le paramètre url, comme ceci:

url="jdbc:mysql://localhost/view_db?useUnicode=yes&amp;characterEncoding=utf8"
7
Slava Semushin