2012-11-13 33 views
20

Tôi đang cố chèn chữ cái tiếng Ả Rập vào cơ sở dữ liệu mysql, nhưng nó chỉ lưu trữ "????". Tôi đang sử dụng DBCP để kết nối với mysql databse, đây là nguồn dữ liệu:cách sử dụng (useUnicode = yes characterEncoding = UTF-8) với 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"/> 

làm thế nào để thiết lập mã UTF-8 với cấu hình DBCP hoặc làm thế nào để sử dụng (useUnicode = yes characterEncoding = UTF-8)?

+0

Chỉ cần kiểm tra, bạn đã chỉ định DEFAULT CHARACTER SET utf8 trong khi tạo cơ sở dữ liệu MySQL của bạn? – shazin

+0

có, tôi đã chỉ định CHARACTER SET utf8, nó chấp nhận chữ cái arabic khi chúng được nhập bằng tay, tuy nhiên, nó sẽ không hoạt động khi tôi đang cố chèn chúng từ tệp jsp. – solid

Trả lời

33

Theo DBCP documentation bạn cần sử dụng tham số connectionProperties với giá trị [propertyName=propertyValue;]*, vì vậy trong trường hợp của bạn, bạn nên sử dụng một cái gì đó như:

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

(lưu ý đóng ;!)

5

Chỉ định nó trong tham số url, như thế này:

url="jdbc:mysql://localhost/view_db?useUnicode=yes&amp;characterEncoding=utf8" 
+1

Tôi đã làm nó, nhưng nó nói "Không thể tải cấu hình máy chủ Tomcat tại \ Servers \ Tomcat v7.0 Server tại localhost-config. Cấu hình có thể bị hỏng hoặc không đầy đủ. Tham chiếu đến thực thể" characterEncoding "phải kết thúc bằng ';' dấu phân cách. " điều đó có nghĩa là gì? – solid

+2

Bạn cần sử dụng & khi sử dụngUnicode = yes & characterEncoding = utf8 – mrgrumpy22

7

Tôi đã thử cách sau và đã hoạt động tôi sử dụng tomcat 7.0.40 và MySQL 5.5 trên Debian Wheezy hộp:

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

Lưu ý rằng & phải được thể hiện dưới dạng & amp;

cũng chắc chắn rằng my.cnf của bạn cho máy chủ mysql của bạn có những dòng sau:

[client] 
default-character-set=utf8 

[mysql] 
default-character-set=utf8 
Các vấn đề liên quan