web-dev-qa-db-ja.com

DBCPでの使用方法(useUnicode = yes characterEncoding = UTF-8)

Mysqlデータベースにアラビア文字を挿入しようとしていますが、「????」のみが保存されています。 mysql databseとの接続にDBCPを使用しています。データソースは次のとおりです。

          <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)

22
solid

DBCPドキュメント によると、パラメータconnectionPropertiesを値[propertyName=propertyValue;]*と共に使用する必要があるため、あなたの場合、次のようなものを使用する必要があります。

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

(最後の;!に注意してください)

35
Mark Rotteveel

以下を試してみましたが、Debian WheezyボックスでTomcat 7.0.40とMySQL 5.5を使用して動作しました:

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

ampとして表す必要があることに注意してください;

また、mysqlサーバーのmy.cnfに次の行があることを確認してください。

[client]
default-character-set=utf8

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

次のように、urlパラメーターで指定します。

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