Cài đặt kết nối MySQL có thể bị lỗi ở đây. Chạy lệnh MySQL này khi bạn kết nối với cơ sở dữ liệu từ PHP, trước khi bạn chạy bất kỳ lệnh SQL nào khác:
SET names 'utf8';
Điều này sẽ đặt mã hóa của kết nối thành UTF-8. Như bạn đang nói, trang và cơ sở dữ liệu đã ở trong UTF-8 (điều đó cũng có nghĩa là trang gửi Content-Type: text/html; charset=utf-8
); bản thân kết nối có thể vô tình có mã hóa khác theo mặc định :(