2016-04-21 226 views
-1

我使用ajax從我的查詢中獲得我的結果。 ajax給出了響應(sql查詢成功執行),但有些字符(克羅地亞語)被破壞,因此utf-8無法正常工作。UTF-8 php-mysqli不工作

在我的PHP腳本,我已經試過如下:

$con->set_charset('utf8'); 

OR

$con->query("SET NAMES 'utf8'"); 

我還添加在標題下面一行:

header('Content-Type: text/html; charset=utf-8'); 

以及我的客戶端中的內容類型 - 阿賈克斯代碼:

contentType: "application/json; charset=utf-8" 

我的角色還在破,我沒有得到utf-8的有效回覆。 在phpMyAdmin我有utf8_general_ci整理,我相信是好的。

+0

你有沒有檢查他們是否也在數據庫中「破碎」? –

+0

他們不是。文本是100%正常(克羅地亞) –

+0

沒有再次... –

回答

0

我找到了答案。

json_encode()函數內部的第二個參數(JSON_UNESCAPED_UNICODE)是問題所在。

echo json_encode($myArray,JSON_UNESCAPED_UNICODE); 

所以隨着JSON_UNESCAPED_UNICODE必須添加的代碼是以下行。

$con->set_charset('utf8'); 

如果你想切換到​​然後$con->query("SET NAMES 'utf8'");不會工作(你會得到一個服務器的500錯誤)。

header('Content-Type: text/html; charset=utf-8');不是必需的

在你修復你的PHP代碼,你必須確保當你針對phyMyAdmin或smillar數據庫運行查詢,覈對必須UTF8在我的情況utf8_general_ci

中,當然,不要忘了

數據類型: 「JSON」

jQuery中的Ajax

+0

這將有助於,如果你已經定義什麼「破」意味着什麼...... http://stackoverflow.com/q/22745662/476 – deceze

+0

我錯過了編寫json_encode函數,因此我認爲我沒有得到正確的答案... –

+1

你最終錯過了描述你的問題。你描述了你所做的事情,你完全沒有說過究竟是什麼「錯誤」。原來,沒有什麼是「錯誤」...... – deceze