-->

特殊字符(e)在JSON响应(Special characters (ë) in JSON-resp

2019-09-23 01:29发布

我的数据库存储一些文本,我必须让使用AJAX。 这是顺利,但只有当它不包含特殊字符,如E或A。 我发现这个话题这让我改变了AJAX请求的字符集的一些文章,但这些都不为我工作。

当我启动萤火它说,这对标题:

Antwoordheaders(荷兰语为responseHeaders响应)
缓冲控制无店面,无缓存,必重新验证,检查后= 0,前检查= 0
连接关闭
内容长度94
内容类型text / html; 字符集= ISO-8859-15
日期星期三,2012年9月26日九时52分56秒GMT
过期星期四,1981年11月19日8点52分00秒GMT
语用无缓存
服务器的Apache
X供电,通过PleskLin

Verzoekheaders(荷兰语为requestheaders)
接受的text / html,应用/ XHTML + xml的,应用/ XML; Q = 0.9,/ Q = 0.8
接受编码gzip的,放气
接受语言NL,EN-US; Q = 0.7,连接; Q = 0.3
授权基本c3BvdGlkczp6SkBVajRrcw ==
连接保持
内容类型text / html; 字符集= ISO-8859-15
饼干__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)壁虎/ 20100101火狐/ 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;`

Answer 1:

  1. 请确保您设置的标头为UTF-8:

     header('Content-Type: application/json; charset=utf-8'); 
  2. 确保您的数据库连接与任何查询之前UTF-8编码做:

     $query = mysql_query("SET NAMES 'UTF8'"); 
  3. 据我所知,JSON编码不能在纯ASCII表示任何字符。 你应该对响应解码那个JSON。

  4. 作为尝试移动到PDO mysql_*功能已被弃用。 使用这个漂亮的教程



Answer 2:

从JSON RFC-4627: JSON text SHALL be encoded in Unicode. The default encoding is UTF-8. JSON text SHALL be encoded in Unicode. The default encoding is UTF-8. 使用mb_convert_encodingiconv改变字符串编码。

并发送正确的头:

header('Content-Type: application/json;charset=utf-8');
echo json_encode($data);


Answer 3:

验证Content-Type的肉

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


文章来源: Special characters (ë) in JSON-response