php json_encode中文编码的问题

php中文网
发布: 2016-07-25 09:04:22
原创
1456人浏览过
  1. $a = array('city' => "北京"'bcd天津");
  2. echo json_encode($a) . " ";
  3. ?>
  4. debian-test-server:/home/php# php test1.php
  5. {"city":"u5317u4eac"'\abcdu5929u6d25"}
复制代码

需求,数据库中某个字段可以保存多个值,这样需要将数据用json编码以后保存在数据库中,用php内置的json_encode函数处理以后中文变成了unicode码(比如{"city":"u5317u4eac"'\abcdu5929u6d25"}),虽然网页上面能正确处理,但是从手机同步过来的数据是汉字(比如{"city":"北京"'\abcd天津"}),而不是unicode,为了从两个地方传递过来的数据在数据库中以相同的编码存储,现在暂时考虑将unicode码转换为汉字或是自定义一个json_encode函数,此函数不会将中文转换为unicode码。

在PHP的官方网站找到一个函数,就是将数据转换json,而且中文不会被转换为unicode码。

  1. /**

  2. * 由于php的json扩展自带的函数json_encode会将汉字转换成unicode码
  3. * 所以我们在这里用自定义的json_encode,这个函数不会将汉字转换为unicode码
  4. */
  5. function customJsonEncode($a = false) {
  6. if (is_null($a)) return 'null';
  7. if ($a === false) return 'false';
  8. if ($a === true) return 'true';
  9. if (is_scalar($a)) {
  10. if (is_float($a)) {
  11. // Always use "." for floats.
  12. return floatval(str_replace(",", ".", strval($a)));
  13. }
  14. if (is_string($a)) {

  15. static $jsonReplaces = array(array("\", "/", " ", " ", " ", "", " ", '"'), array('\\', '\/', '\n', '\t', '\r', '\b', '\f', '"'));
  16. return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"';
  17. } else {
  18. return $a;
  19. }
  20. }
  21. $isList = true;

  22. for ($i = 0, reset($a); $i if (key($a) !== $i) {
  23. $isList = false;
  24. break;
  25. }
  26. }
  27. $result = array();

    php商城系统
    php商城系统

    PHP商城系统是国内功能优秀的网上商城系统,同时也是一个商业的PHP开发框架,有多套免费模版,强大的后台管理功能,专业的网上商城系统解决方案,快速建设网上购物商城、数码商城、手机商城、办公用品商城等网站。 php商城系统v3.0 rc6升级 1、主要修复用户使用中出现的js未加载完报错问题,后台整改、以及后台栏目的全新部署、更利于用户体验。 2、扩展出,更多系统内部的功能,以便用户能够迅速找到需

    php商城系统 0
    查看详情 php商城系统
  28. if ($isList) {
  29. foreach ($a as $v) $result[] = customJsonEncode($v);
  30. return '[' . join(',', $result) . ']';
  31. } else {
  32. foreach ($a as $k => $v) $result[] = customJsonEncode($k).':'.customJsonEncode($v);
  33. return '{' . join(',', $result) . '}';
  34. }
  35. }

    立即学习PHP免费学习笔记(深入)”;

  36. $a = array('a' => array('c' => '中\"'国', 'd' => '韩国'), 'b' => '日本');

  37. echo customJsonEncode($a) . l;
  38. $b = array(array('c' => '中\"'国', 'd' => '韩国'), '日本');
  39. echo customJsonEncode($b) . l;
  40. ?>
复制代码

输出: {"a":{"c":"中\"'国","d":"韩国"},"b":"日本"} [{"c":"中\"'国","d":"韩国"},"日本"]



最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号