2016-04-21 218 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