Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Mã hóa JSP trong khi chèn văn bản không phải tiếng Anh trong cơ sở dữ liệu MySQL

Điều này sẽ chỉ xảy ra khi cả hai bên hoàn toàn nhận thức được sự khác biệt về mã hóa ký tự ở mỗi bên. Bất kỳ ký tự nào không nằm trong bảng mã ký tự được sử dụng ở phía bên kia sẽ được thay thế bằng dấu chấm hỏi ? . Nếu không, bạn sẽ thấy Mojibake .

Trong trường hợp cụ thể này, các phía đó là phía Java và phía cơ sở dữ liệu, với trình điều khiển JDBC làm trung gian. Để khắc phục điều này, bạn cần cho trình điều khiển JDBC biết mã hóa các ký tự đó. Bạn có thể thực hiện việc đó bằng cách đặt useUnicode=true&characterEncoding=UTF-8 trong URL kết nối JDBC.

jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8

Sau đó, tùy thuộc vào cách bạn đang gửi các tham số từ máy khách đến máy chủ, bạn cũng có thể cần sửa mã hóa yêu cầu. Thực tế là bạn đang nhìn thấy Mojibake khi xóa request.setCharacterEncoding("UTF-8") , bạn đang sử dụng POST. Vì vậy, phần đó là tốt.

Đối với trường hợp, nếu bạn đang sử dụng GET để gửi các tham số, bạn sẽ cần phải định cấu hình mã hóa URI ở phía máy chủ. Không rõ bạn đang sử dụng máy chủ nào, nhưng trong trường hợp chẳng hạn như Tomcat, vấn đề là chỉnh sửa <Connector> mục nhập trong /conf/server.xml như sau:

<Connector ... URIEncoding="UTF-8">

Xem thêm:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách cập nhật giá trị khóa ngoại trong cơ sở dữ liệu mysql

  2. ERROR 1878 (HY000):Lỗi ghi tệp tạm thời

  3. MySQL Workbench

  4. lỗi cú pháp:'dấu phân cách' không phải là đầu vào hợp lệ ở đây

  5. ScaleGrid DigitalOcean Hỗ trợ cho MySQL, PostgreSQL và Redis ™ Hiện đã có