Hello World

Just So So ...

JSON_UNESCAPED_UNICODE让json_encode更适合中文

PHP 0 评

我们知道,用PHP的json_encode来处理中文的时候,中文会被unicode编码,类似\u*的格式。不可读且在一定程度上增加传输的数据量。
例如:

echo json_encode("中文"); //结果为:"\u4e2d\u658"

因为不可读,这对于开发过程中进行调试很是头疼。那么有没有解决的办法呢?
在PHP5.4,这个问题终于得到解决。json_encode新增了第二个参数:JSON_UNESCAPED_UNICODE,顾名思义,不要用unicode编码中文。
看下面的例子:

echo json_encode("中文", JSON_UNESCAPED_UNICODE); //结果为:"中文"

See?输出结果可读。但仍有一个疑问:PHP开发最经常用到JSON输出的情况是,来自前端AJAX的请求,而且jQuery的$.ajax方法解析json_encode($var)返回的结果非常流畅。那么现在实现了可读性结果输出,对jQuery的解析有没有影响呢?看下面的例子:
Js代码

$.ajax({  
       type: 'GET',  
       url: 'back.php',  
       success: function(xhr) {  
              document.write("key1:" + xhr.key1 + "<br>");  
              document.write("中文键:" + xhr.中文键 + "<br>");  
       },  
       dataType: 'JSON'  
}) 

后端代码:
Php代码

$var = array(  
       'key1' => 'this is key',  
       '中文键' => '中文值',  
       'key2' => '中文abc'  
);  
echo json_encode($var, JSON_UNESCAPED_UNICODE);

输出结果:

key1:this is key
中文键:中文值

PERFECT!!!

发表评论
撰写评论