PHP使用json_encode函数时不转义中文的解决方法


Posted in PHP onNovember 12, 2014

本文实例讲述了PHP使用json_encode函数时不转义中文的解决方法。分享给大家供大家参考。具体方法如下:

json_encode函数对于gbk中的中文字符是不会转换的或直接转换成空格了,本文就来给各位整理一个关于json不转义中文问题处理技巧,相信对大家有所帮助。

如果你调用 PHP 自带的 json_encode() 函数, 碰到中文时, 中文会被转义掉. 例如:

echo json_encode(array('你好'));

// 输出: ["\u4f60\u597d"]

这非常恼人, 像是一堆乱码, JSON 标准从来没有说要把非 ASCII 字符转义, 标准说的是”Any UNICODE character”.
如何禁用掉这种转义呢? 答案是, PHP 自带的 json_encode() 不能禁用这个特性(在 5.4.0 版本之前, 之后的版本你可以加 JSON_UNESCAPED_UNICODE 选项), 你只能换一个新的 JSON 库. 为了简单, 我简单写了几十行代码, 实现一个 json_encode().
class Util

{

    static function json_encode($input){

        // 从 PHP 5.4.0 起, 增加了这个选项.

        if(defined('JSON_UNESCAPED_UNICODE')){

            return json_encode($input, JSON_UNESCAPED_UNICODE);

        }

        if(is_string($input)){

            $text = $input;

            $text = str_replace('\\', '\\\\', $text);

            $text = str_replace(

                array("\r", "\n", "\t", "\""),

                array('\r', '\n', '\t', '\\"'),

                $text);

            return '"' . $text . '"';

        }else if(is_array($input) || is_object($input)){

            $arr = array();

            $is_obj = is_object($input) || (array_keys($input) !== range(0, count($input) - 1));

            foreach($input as $k=>$v){

                if($is_obj){

                    $arr[] = self::json_encode($k) . ':' . self::json_encode($v);

                }else{

                    $arr[] = self::json_encode($v);

                }

            }

            if($is_obj){

                return '{' . join(',', $arr) . '}';

            }else{

                return '[' . join(',', $arr) . ']';

            }

        }else{

            return $input . '';

        }

    }

}

考虑不到的地方, 例如判断关联数组(is_obj)的地方, 遇到问题再说. 你要是不喜欢类, 那就自己转成纯函数, 换个名字吧。

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP脚本数据库功能详解(上)
Oct 09 PHP
Windows下利用Gvim写PHP产生中文乱码问题解决方法
Apr 20 PHP
PHP图片处理类 phpThumb参数用法介绍
Mar 11 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
Nov 14 PHP
PHP批量检测并去除文件BOM头代码实例
May 08 PHP
thinkphp3.2.2前后台公用类架构问题分析
Nov 25 PHP
php中使用url传递数组的方法
Feb 11 PHP
php实现指定字符串中查找子字符串的方法
Mar 17 PHP
学习php设计模式 php实现门面模式(Facade)
Dec 07 PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
Mar 21 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
Mar 16 PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
Nov 12 #PHP
PHP中file_exists()判断中文文件名无效的解决方法
Nov 12 #PHP
php基于str_pad实现卡号不足位数自动补0的方法
Nov 12 #PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
Nov 12 #PHP
PHP之sprintf函数用法详解
Nov 12 #PHP
php中simplexml_load_file函数用法实例
Nov 12 #PHP
php实现的ping端口函数实例
Nov 12 #PHP
You might like
php 伪造本地文件包含漏洞的代码
2011/11/03 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
2014/06/04 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
php实现微信小程序授权登录功能(实现流程)
2019/11/13 PHP
用JavaScript和注册表脚本实现右键收藏Web页选中文本
2007/01/28 Javascript
js实现的网页颜色代码表全集
2007/07/17 Javascript
jQuery+jqmodal弹出窗口实现代码分明
2010/06/14 Javascript
一个简单的js动画效果代码
2010/07/20 Javascript
ajax java 实现自动完成功能
2012/12/19 Javascript
onkeypress字符按键兼容所有浏览器使用介绍
2013/04/24 Javascript
javascript级联下拉列表实例代码(自写)
2013/05/10 Javascript
3种不同方式的焦点图轮播特效分享
2013/10/30 Javascript
jQuery中的pushStack实现原理和应用实例
2015/02/03 Javascript
js表单提交和submit提交的区别实例分析
2015/12/10 Javascript
JavaScript代码实现左右上下自动晃动自动移动
2016/04/08 Javascript
js Canvas绘制圆形时钟教程
2017/02/06 Javascript
原生JS实现图片无缝滚动方法(附带封装的运动框架)
2017/10/01 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
Angularjs实现数组随机排序的方法
2018/10/02 Javascript
JavaScript常见事件处理程序实例总结
2019/01/05 Javascript
vue使用Proxy实现双向绑定的方法示例
2019/03/20 Javascript
解决vue的router组件component在import时不能使用变量问题
2020/07/26 Javascript
[19:26]TNC vs EG (BO3)
2018/06/07 DOTA
[46:23]OG vs EG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python Web编程之WSGI协议简介
2018/07/18 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
python创建学生成绩管理系统
2019/11/22 Python
Django操作session 的方法
2020/03/09 Python
Python QTimer实现多线程及QSS应用过程解析
2020/07/11 Python
python编写实现抽奖器
2020/09/10 Python
CSS3教程:background-clip和background-origin
2008/10/17 HTML / CSS
公司中秋节活动方案
2014/02/12 职场文书
经典英文广告词
2014/03/18 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
老公保证书
2015/01/17 职场文书
社会实践活动总结格式
2015/05/11 职场文书