JSON响应中的特殊字符(ë)

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;`

Mih*_*rga 6

  1. 确保将标头设置为UTF-8:

    header('Content-Type: application/json; charset=utf-8');
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在任何查询之前,请确保您使用UTF-8编码建立了与数据库的连接:

    $query = mysql_query("SET NAMES 'UTF8'");
    
    Run Code Online (Sandbox Code Playgroud)
  3. 据我所知,JSON编码任何无法用纯ASCII表示的字符.你应该在响应时解码那个JSON.

  4. 尝试移动到PDO,因为mysql_*函数已弃用.使用这个很好的教程