解決nginx_1.4+MySql_5.6 中文亂碼(問號)問題
阿新 • • 發佈:2019-01-12
【問題背景】使用阿里雲ESC,執行Aliyun Linux,購買並安裝了駐雲開發維護的Linux一鍵安裝web環境。配置為nginx 1.4 MySql 5.6,建立資料庫並插入含有中文的資料後,用DHC除錯時中文出現了亂碼,具體表現為中文部分被用“?”代替。
【解決之道】
1、首先我確定我的資料庫、表、列的編碼都已經設定為utf-8,該問題不是由於這些因素引起。
2、在解決中,主要參考了這篇文章Linux下MySQL 5.5/5.6的修改字符集編碼為UTF8(徹底解決中文亂碼問題),不過,該文中所述解決方法和情況並不完全適合我的問題,文章下邊的評論中的觀點很有價值。
3、具體的解決方法是:開啟MySql的配置檔案——my.cnf,新增
[mysqld]
character-set-server = utf8`
然後重啟MySql服務即可。注意,僅僅加這個就好了,不要新增更多的內容。
4、在解決中,也踩了幾個坑,羅列如下,防止再有人入坑:
(1).如參考的這篇文章中某個評論者所述:新增
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
這兩部分並沒有卵用,並不會將client對應的編碼設定為utf-8;
(2). 如下一條可以按需新增,具體什麼條件下新增我也不清楚,就我的問題,加了也沒有問題,沒有更多研究:
init-connect='SET NAMES utf8'
【特別提醒】
修改配置檔案時,不要簡單地複製貼上,一定要確保所有的字元都是英文的,誤帶入中文字元可能導致配置不正確,甚至無法啟動!