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

Chuỗi UTF-8 trong cơ sở dữ liệu MySQL bị rối loạn sau khi thay đổi cấu hình

C3 83 C6 92 C3 82 C2 AA
C3 3F C2 AA

Đó là những gì bạn nhận được nếu coi chuỗi byte là UTF-8, sau đó mã hóa nó thành ISO-8859-1. 3F? , đã được đưa vào làm ký tự thay thế, vì UTF-8 C6 92 là U + 0192 ƒ không tồn tại trong ISO-8859-1. Nhưng nó tồn tại trong trang mã Windows 1252 Tây Âu, một bảng mã rất giống với ISO-8859-1; ở đó, đó là byte 0x83.

C3 83 C2 AA

Đi qua một vòng khác của coi-như-UTF-8-byte-and-encode-to-cp1252 và bạn nhận được:

C3 AA

cuối cùng là UTF-8 cho ê .

Lưu ý rằng ngay cả khi bạn phân phát trang HTML không phải XML một cách rõ ràng là ISO-8859-1, các trình duyệt sẽ thực sự sử dụng mã hóa cp1252, do những lý do xấu trong lịch sử.

Thật không may, MySQL không có mã hóa cp1252; latin1 là (chính xác) ISO-8859-1. Vì vậy, bạn sẽ không thể sửa dữ liệu bằng cách kết xuất dưới dạng latin1 sau đó tải lại dưới dạng utf8 (hai lần). Bạn phải xử lý tập lệnh bằng một trình soạn thảo văn bản có thể lưu dưới dạng một trong hai (hoặc ví dụ:trong tệp Python file(path, 'rb').read().decode('utf-8').encode('cp1252').decode('utf-8').encode('cp1252') ).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để tôi có thể chèn từ tiếng Ả Rập vào cơ sở dữ liệu mysql bằng java

  2. truy vấn cực kỳ chậm sau khi chuyển sang mysql 5.7

  3. Chia kết quả MYSQL thành 4 mảng

  4. TẢI THÔNG TIN DỮ LIỆU chỉ 1 bản ghi được chèn

  5. Hoạt động giống như trục xoay MySQL để nhận phân tích phần trăm tổng số sự kiện mỗi ngày cho mỗi loại sự kiện