php怎么获取数据库转换成json数据乱码
在jquery的使用中,json的数据往往是从后台取出来,然而,由服务器端生成的json数据,在前端调用时有时会遇到一些问题,而出现乱码则属于较为常见的现象。本文将通过实例与大家分享一下php生成json数据为乱码的处理方法。
操作方法
- 01
php生成json数据为乱码的处理方法一 先看看下面这段由php生成的json字符串:
- 02
"\u4e2d\u56fd"就是一段乱码,我们现在的目标是把这段乱码变成可读字符串。 通过测试,可以采用这样的方法解决问题:在php生成json的程序中,在json_encode之前,把所有数组内所有内容都用urlencode()处理一下,然用json_encode()转换成json字符串,最后再用urldecode()将编码过的中文转回来。 下面为两个处理函数,可以直接调用:
- 03
通过这样处理后,"\u4e2d\u56fd"这段乱码就会变成了"中国"的可读字符了。
- 04
php实现的另外一种解决方法 该方法跟上面的方法类似,也是先urlencode (),再urldecode()来处理。 参考如下实例
- 05
在客户端处理json乱码的方法 有人认为,json_encode()输出的是标准的json对象,那个不叫乱码。我觉得也有道理,处理这种编码应该可以在客户端实现,而不需要在服务器处理。 如下便是在客户端的处理方法。 如果是ajax,直接
- 06
在客户端,
- 07
弹出的不会是乱码的。如果觉得eval函数不安全,可以使用$.getJSON( );,如果选择了jquery库的话。 还有,使用这种方法要注意的一点是,如果数据源还有特殊符号,比如",\\,客户端使用eval解析会出现问题。
- 08
相关意见 echo json_encode($var); 输出的是标准的json字符串,中文本来就是被转换过的,不是什么乱码。 如果项目编码不是utf8,直接使用json_encode转换出来的中文会变成NULL的,urlencode后就不存在这个问题了。 生成json字符串的时候只能使用utf-8。不过可以用下面这个函数先实现utf8数组转码然后在直接使用json_encode():
- 09
如果客户端是用js写,确实没什么必要在php服务器端处理字符串问题。但是我最近在用java的intent链接一个php的url返回数据,一直是转化后的编码,java客户端也没找到解决办法,这时在服务器端的处理方法就很管用。