阿哥论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 661|回复: 0

php中json_encode UTF-8中文乱码的更好解决方法

[复制链接]

2011

主题

1

好友

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

优秀会员 助人为乐 辛勤工作 技术精英 多才多艺 优秀班竹 灌水天才 星球管理 宣传大使 灌水之王 财富勋章 版主勋章 动漫勋章 勤奋会员 论坛精英 PS高手 心 8 闪游皮肤 双鱼座 8★8➹ 志愿者 乖

发表于 2015-4-26 11:42:30 |显示全部楼层
PHP中json_encode UTF-8中文乱码的更好解决方法
最近在接口代码当中用到过json_encode,在网上找到说json_encode编码设置为UTF-8中文就不会乱码,经验证这办法确实是有效果的,但是不知道为什么,代码在用过一段时间之后就不太管用了。以下是自己的解决json_encode的办法。有更好的方法请分享出来吧!
第一种:
这种简单的做一个代码转换,urlcode之后再返回所需数组
我代码这样就足够了。
代码如下 复制代码
  1. public static function encodeOperations ($array)

  2. {

  3. foreach ((array)$array as $key => $value) {

  4. if (is_array($value)) {

  5. encodeOperations($array[$key]);

  6. } else {

  7. $array[$key] = urlencode(mb_convert_encoding($value,'UTF-8','GBK'));

  8. }

  9. }

  10. return $array;

  11. }
复制代码
第二种:
这种是在网上看到的,然后就是有评论说会出现无限循环的问题,但是这显然很全面的,然后我测试之后也确实有,贴这里仅供参考
代码如下
  1. /**************************************************************

  2. *

  3. * 使用特定function对数组中所有元素做处理

  4. * @param string &$array 要处理的字符串

  5. * @param string $tocode 编码后

  6. * @param string $oldcode 编码前

  7. * @param string $function 要执行的函数

  8. * @return boolean $apply_to_keys_also 是否也应用到key上

  9. * @return array $array 是否也应用到key上

  10. * @Access public

  11. *

  12. *************************************************************/

  13. function encodeOperations (&$array, $function, $tocode=false,$oldcode=false,$apply_to_keys_also = false)

  14. {

  15. foreach ($array as $key => $value) {
  16. (www.jb51.net)
  17. if (is_array($value)) {

  18. encodeOperations($array[$key], $function, $apply_to_keys_also);

  19. } else {

  20. if($tocode&&$oldcode) {

  21. if(function_exists(mb_convert_encoding)) {

  22. $value = mb_convert_encoding($value,$tocode,$oldcode);

  23. }else{

  24. return "error";

  25. }

  26. }

  27. $array[$key] = $function($value);

  28. }


  29. if ($apply_to_keys_also && is_string($key)) {

  30. $new_key = $function($key);

  31. if ($new_key != $key) {

  32. $array[$new_key] = $array[$key];

  33. unset($array[$key]);

  34. }

  35. }

  36. }

  37. return $array;

  38. }


  39. /****from:http://www.jb51.net/phper/31/66729.htm**********************************************************

  40. *

  41. * 将数组转换为JSON字符串(兼容中文)

  42. * @param array $array 要转换的数组

  43. * @return string 转换得到的json字符串

  44. * @access public

  45. *

  46. *************************************************************/

  47. function JSON($array) {

  48. arrayRecursive($array, 'urlencode', true);

  49. $json = json_encode($array);

  50. return urldecode($json);

  51. }
复制代码
php中json_encode UTF-8中文乱码的更好解决方法

该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

回顶部