Ở cái nhìn đầu tiên, hãy truy cập http://www.nicknettleton.com/ zine / php / php-utf-8-cheatsheet Tôi nghĩ rằng thiếu một điều quan trọng (có lẽ tôi đã bỏ qua điều này). Tùy thuộc vào cài đặt và / hoặc cấu hình MySQL của bạn, bạn phải đặt mã hóa kết nối để MySQL biết bạn đang mong đợi mã hóa nào ở phía máy khách (có nghĩa là máy khách bên của kết nối MySQL, mà bạn phải là tập lệnh PHP). Bạn có thể thực hiện việc này bằng cách phát hành thủ công
SET NAMES utf8
truy vấn trước bất kỳ truy vấn nào khác mà bạn gửi đến máy chủ MySQL.
Nếu bạn đang sử dụng PDO ở phía PHP, bạn có thể thiết lập kết nối để tự động đưa ra truy vấn này trên mỗi (lại) kết nối bằng cách sử dụng
$db=new PDO($dsn, $user, $pass);
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES utf8");
khi khởi tạo kết nối db của bạn.