我自己試了很久,用了快 20 年,都沒發生問題的解法:
在 mysql 的 my.cnf 設定檔中的 [mysqld] 段,加上以下兩行,重新啟動 mysqld。
character-set-server = utf8
init-connect='SET NAMES binary;'
然後你的 php 也是用 utf-8 來寫程式及處理資料,這樣就行了。
這是指 mysql 跟 php 都使用 utf-8,但是當 php 在送資料給 mysql 時,送什麼就是什麼,不要做任何變更轉碼 (binary 模式),同時讀什麼也就是什麼。