php抓取网页json数据(Ajax与后台php页面进行交互的时候都碰到过中文乱码问题)

优采云 发布时间: 2022-03-14 13:12

  php抓取网页json数据(Ajax与后台php页面进行交互的时候都碰到过中文乱码问题)

  相信很多人在使用Ajax与后台php页面交互的时候都遇到过中文乱码的问题。 JSON作为一种轻量级的数据交换格式非常流行,但是使用PHP作为后台交互容易出现中文乱码的问题。 JSON和js一样,客户端的字符都是以UTF8的形式处理的,也就是说,当使用JSON作为提交和接收的数据格式时,字符都是以UTF8编码处理的。当我们的页面编码和数据库编码没有使用UTF8的时候,很容易出现中文乱码的问题。解决办法自然是在用js或者PHP处理JSON数据的时候使用UTF8。

  PHP5.2及以上版本使用json_encode作为内置函数,给网站生产者带来了极大的方便,但要注意json_encode只支持UTF8编码的字符,否则会出现中文乱码字符或空值会出现。解决方案分为以下两步。

  第 1 步确保在使用 JSON 处理时字符以 UTF8 编码。具体来说,我们可以将数据库编码和页面编码改为UTF8。当然,如果你喜欢使用 gbk 编码,你可以在处理 JSON 之前将字符转换为 UTF8。 PHP中有以下几种方法: Step2 PHP后台页面(页面编码为UTF-8或字符已转换为UTF-8) 使用json_encode将PHP中的array数组转换为JSON字符串,例如:查看输出结果对于:

  {“名称”:”\u4e2d\u6587\u5b57\u7b26\u4e32”,”值”:”测试”}

  可以看出,即使是UTF8编码的字符,在使用json_encode时也会出现中文乱码。解决方法是先使用函数urlencode()处理字符,再使用json_encode,再使用json_encode,输出结果时使用函数urldecode()返回结果。具体如下: 查看输出结果为:

  {"name":"中文字符串","value":"test"}

  至此,汉字输出成功。随意使用 json_encode。这样在前台javascript中Ajax接收到eval后,PHP后台输出的JSON字符串就不会出现中文乱码了,因为js也是处理UTF8形式的JSON格式数据,和PHP类似,所以接收 PHP 页面。 JSON字符串不会有问题。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线