Jov*_*ano 1 php ajax json special-characters
我的数据库存储了一些我必须使用AJAX获得的文本.这很顺利,但只有当它不包含特殊字符,如ë或ä时.我找到了一些关于这个主题的文章告诉我要改变AJAX请求的字符集,但这些都不适合我.
当我开始使用firebug时,它说了这个标题:
Antwoordheaders(dutch for responseheaders)
Cache-Control no-store,no-cache,must-revalidate,post-check = 0,pre-check = 0
Connection close
Content-Length 94
Content-Type text/html; charset = ISO-8859-15
Date Wed,26 Sep 2012 09:52:56 GMT
Expires Thu,19 Nov 1981 08:52:00 GMT
Pragma no-cache
Server Apache
X-Powered-By PleskLin
Verzoekheaders(荷兰语为requestheaders)
接受text/html,application/xhtml + xml,application/xml; q = 0.9,/ ; q = 0.8
Accept-Encoding gzip,deflate
Accept-Language nl,en-us; q = 0.7,en ; q = 0.3
授权基本c3BvdGlkczp6SkBVajRrcw ==
连接保持活动
内容类型text/html; charset = ISO-8859-15
Cookie __utma = 196329838.697518114.1346065716.1346065716.1346065716.1; __utmz = 196329838.1346065716.1.1.utmcsr =(直接)| utmccn =(直接)| utmcmd =(无); PHPSESSID = 2h4vu8gu9v8fe5l1t3ad5agp86
DNT 1
主机www.spotids.com
Referer http://www.spotids.com/private/?p=16
用户代理Mozilla/5.0(Windows NT 6.1; WOW64; rv:14.0)Gecko/20100101 Firefox/14.0.1
两个标题都在讨论charset = ISO-8859-15,它应该包含像ë这样的字符,但它对我不起作用.
我用于此的代码(PHP):
`$newresult = mysql_query($query2);
$result = array();
while( $row = mysql_fetch_array($newresult))
{
array_push($result, $row);
}
$jsonText = json_encode($result);
echo $jsonText;`
确保将标头设置为UTF-8:
header('Content-Type: application/json; charset=utf-8');
Run Code Online (Sandbox Code Playgroud)在任何查询之前,请确保您使用UTF-8编码建立了与数据库的连接:
$query = mysql_query("SET NAMES 'UTF8'");
Run Code Online (Sandbox Code Playgroud)据我所知,JSON编码任何无法用纯ASCII表示的字符.你应该在响应时解码那个JSON.
尝试移动到PDO,因为mysql_*函数已弃用.使用这个很好的教程