問題
一直以來這亂碼問題遇到的重覆不下 N 次,後來看到 SQLSTATE[HY000] [2002]
的錯誤代號,可以直覺反應就是連不到資料庫
Trace 出來的錯誤訊息實際是長這個樣子的,這是因為 MySQL 預設輸出錯誤訊息的是以 UTF-8 輸出,而非二進制的字符字串值從其字符集轉換為 UTF-8 就產生像以下的編碼狀況
mysqli_connect(): (HY000/2002): \xb5L\xaak\xb3s\xbdu\xa1A\xa6]\xac\xb0\xa5\xd8\xbc\xd0\xb9q\xb8\xa3\xa9\xda\xb5\xb4\xb3s\xbdu\xa1C\r\n
我們看顯示的樣子就像下圖,以使用者端來看就是有點不開心
解決方法
用 mb_convert_encoding 的方式,先將取得編碼訊息轉成 utf-8 (以繁體中文的來說就是 big5)
如此就能正常顯示中文訊息啦