最近做項目在部署到阿裡雲伺服器上之後出現了兩個問題: 1、亂碼問題。 2、ajax的php處理頁面裡面利用json_encode()函數返回json數據,則資料庫返回的數據只能是UTF8,如果是gbk則json也無法返回。 發現是資料庫編碼格式問題,網站使用的編碼格式為UTF8,資料庫的編碼格式調為 ...
最近做項目在部署到阿裡雲伺服器上之後出現了兩個問題:
1、亂碼問題。
2、ajax的php處理頁面裡面利用json_encode()函數返回json數據,則資料庫返回的數據只能是UTF8,如果是gbk則json也無法返回。
發現是資料庫編碼格式問題,網站使用的編碼格式為UTF8,資料庫的編碼格式調為了UTF8,但是character_set_server的值還是gbk。
查看資料庫編碼:
在mysql命令行裡面輸入:show variables like 'character%';
所以還是有亂碼存在。
於是從網上找瞭解決方法:
在mysql命令行輸入:set character_set_server=utf8;
OK修改成功!返回數據也正常,但是當關閉資料庫服務,重新啟動,發現set character_set_server又變回了gbk。
所以這個方法只能暫時性的解決。
最終找到了一個能用的不是特別好的解決方法是在執行SQL語句之前,先執行該SQL語句即可:
$conn->query('SET character_set_client = utf8;'); $conn->query('SET character_set_results = utf8;'); $conn->query('SET character_set_connection = utf8;');
這種解決方法個人感覺不是很好,每次執行的次數太多,如果能修改伺服器資料庫的編碼格式最好。