Tôi đã ngừng nghe về vấn đề này trong một vài giờ ngày hôm qua:Đang tải kết xuất mã hóa UTF-8 vào MySQL
Tôi có một cơ sở dữ liệu trên máy chủ MySQL 4.1.22 có mã hóa được đặt thành "UTF- 8 Unicode (utf8) "(như được báo cáo bởi phpMyAdmin). Các bảng trong cơ sở dữ liệu này có bộ ký tự mặc định được đặt thành latin2. Tuy nhiên, ứng dụng web (CMS Made Simple viết bằng PHP) sử dụng nó sẽ hiển thị các trang trong utf8 ...
Tuy nhiên, điều này có thể thực sự hoạt động. Ứng dụng web hiển thị các ký tự chính xác (chủ yếu là tiếng Séc và tiếng Ba Lan được sử dụng).
Tôi chạy: "mysqldump -u xxx -p -h yyy dbname> dump.sql". Điều này sẽ cho tôi một kịch bản SQL đó:
- trông hoàn hảo trong bất kỳ trình soạn (như Notepad +) khi hiển thị trong UTF-8 - tất cả các ký tự hiển thị đúng
- tất cả các bảng trong kịch bản có set charset mặc định để latin2
- nó có "/ *! 40101 SET NAMES latin2 * /;" ở đầu (trong số các cài đặt khác)
Bây giờ, tôi muốn xuất cơ sở dữ liệu này sang máy chủ khác chạy trên MySQL 5.0.67, cũng với mã hóa máy chủ được đặt thành "UTF-8 Unicode (utf8)". Tôi đã sao chép toàn bộ cài đặt CMS Made Simple, sao chép kịch bản lệnh dump.sql và chạy "mysql -h ddd -u zzz -p dbname < dump.sql". Sau đó, tất cả các ký tự được tranh giành khi hiển thị các trang web CMSMS.
Tôi đã thử cài đặt:
SET character_set_client = utf8;
SET character_set_connection = latin2;
Và tất cả các kết hợp (chỉ để an toàn, ngay cả khi nó không có ý nghĩa với tôi): latin2/utf8, latin2/latin2, utf8/utf8, v.v. - không trợ giúp. Tất cả các nhân vật vẫn tranh giành, tuy nhiên đôi khi theo một cách khác :).
Tôi cũng đã thử thay thế tất cả cài đặt latin2 bằng utf8 trong tập lệnh (đặt tên và bộ ký tự mặc định cho bảng). Không có gì.
Có chuyên gia MySQL nào ở đây có thể giải thích chỉ một vài từ (tôi chắc chắn nó đơn giản sau khi tất cả) làm thế nào toàn bộ công cụ mã hóa này thực sự hoạt động? Tôi đọc 9.1.4. Connection Character Sets and Collations nhưng không tìm thấy gì hữu ích ở đó.
Cảm ơn, Matt
+1, thêm '--default-character- set = utf8' đã giải quyết một vấn đề tương tự cho tôi. – Jonik
Tôi vừa gặp khó khăn với vấn đề này, cảm ơn rất nhiều vì giải pháp! – ZelluX
thêm '--default-character-set = latin2' đã giải quyết nó cho tôi, vì tệp của tôi đã được mã hoá 'ISO-8859' –