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

Java Server Pages - đối chiếu khi chèn vào MySql?

Dấu chấm hỏi xuất phát từ điều này:

  • Khách hàng có một nhân vật hợp lệ (tốt) và
  • SET NAMES đồng ý với cách mã hóa mà khách hàng có (tốt), nhưng
  • CHARACTER SET của cột mục tiêu không bao gồm nhân vật dự định (xấu).

Ví dụ:

  • latin1 chỉ xử lý các ký tự Tây Âu; Cố gắng đặt một ký tự Đông Âu hoặc bất kỳ ký tự châu Á nào sẽ không phù hợp.
  • latin2cp1250 có thể xử lý tiếng Séc, vì vậy việc chuyển đổi giữa chúng hầu như là OK, nhưng không phải giữa chúng và latin1
  • utf8mb4 là một tập hợp siêu của utf8 . Chèn một ký tự utf8 vào utf8mb4 là được, nhưng kết quả đảo ngược lại tạo ra dấu '?' trong một số trường hợp.

Các ký tự đã được chuyển đổi thành '?' không thể khôi phục từ bảng.

Cách sửa INSERTs trong tương lai ?

  • Sử dụng utf8mb4 trên (các) cột trong bảng có thể hoạt động trong mọi trường hợp.
  • Nếu không, hãy chọn một số CHARACTER SET cho (các) cột trong bảng khớp hợp lý với dữ liệu khách hàng.

Lý do chỉ một số ký tự là ? (trong š?ž?? ) là vì šž tồn tại bằng tiếng latin1 nhưng những cái khác thì không.

Điểm mấu chốt:Thay đổi CHARACTER SET trong định nghĩa bảng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL lưu trữ các cạnh đồ thị vô hướng một cách hiệu quả

  2. 2017 @ Somenines:Kỷ niệm những câu chuyện của khách hàng của chúng tôi

  3. Cần truy vấn MySQL để chọn từ bảng lưu trữ các cặp giá trị khóa

  4. Cảnh báo thời gian chạy trong django

  5. Ký tự ي và ی và sự khác biệt trong tiếng Ba Tư - Mysql