我们知道,用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的解析有没有影响呢?看下面的例子:
$.ajax({ type: 'GET', url: 'back.php', success: function(xhr) { document.write("key1:" + xhr.key1 + "<br>"); document.write("中文键:" + xhr.中文键 + "<br>"); }, dataType: 'JSON' })
后端代码:
$var = array( 'key1' => 'this is key', '中文键' => '中文值', 'key2' => '中文abc' ); echo json_encode($var, JSON_UNESCAPED_UNICODE);
输出结果:
PERFECT!!!
相关推荐
这种兼容性解决方案提供了一种方式,让那些在旧版本PHP环境下工作的开发者能够使用类似于PHP 5.4及以上版本中提供的JSON_UNESCAPED_UNICODE的功能,以便于在JSON数据交换过程中处理中文字符等问题,保证了更好的数据...
复制代码 代码如下: <?php echo json_encode(“中文”); //”\u4e2d\u6587″ 这就让我们这些...php echo json_encode(“中文”, JSON_UNESCAPED_UNICODE); //”中文” 怎么样, 是不是让大家很开心的改动? 呵呵, 当
PHP提供了一个可选的标志`JSON_UNESCAPED_UNICODE`,它可以防止`json_encode`函数转义UTF-8编码的Unicode字符,也就是中文汉字。在调用`json_encode`时,加入这个标志即可保留中文汉字的原始形式。示例如下: ```...
通过在json_encode函数中加入JSON_UNESCAPED_SLASHES标志,可以直接生成不转义斜杠的JSON字符串。这种方法不需要后续的字符串替换,因此效率更高,且代码更简洁。 示例代码如下: ```php $a = array( '***', '**...
在上面的例子中,`$json_string` 是一个包含中文字符的JSON字符串,`true` 参数表示我们希望结果是一个关联数组而非对象,`512` 是深度限制(通常可忽略),而 `JSON_UNESCAPED_UNICODE` 参数则确保中文字符不会被...
4. **json_encode参数**:在调用`json_encode`时,添加`JSON_UNESCAPED_UNICODE`选项。这个选项会保持Unicode字符(如汉字)的原样,而不是将其转义为`\uXXXX`形式。例如: ```php $result = json_encode($array, ...
用PHP的json_encode来处理中文的时候, 中文都会...echo json_encode(“中文”, JSON_UNESCAPED_UNICODE); //”中文” 2.把汉字先urlencode然后再使用json_encode,json_encode之后再次使用urldecode来解码,这样编码
在使用PHP进行Web开发时,常常需要对数据进行编码转换为JSON格式以便于数据的传输。...在升级到支持JSON_UNESCAPED_UNICODE的PHP版本后,建议使用原生的json_encode函数,以获得更佳的性能和安全性。
JSON_UNESCAPED_UNICODE则允许保留Unicode字符,避免乱码问题。 ```php $options = JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE; $json = json_encode($data, $options); ``` 在处理错误时,json_last_error()...
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('\...
>=5.4.0 选项 JSON_UNESCAPED_UNICODE 允许按字面编码多字节 Unicode 字符(默认为转义为 \uXXXX)。 >=5.3.3 选项 JSON_NUMERIC_CHECK 允许您将数字字符串编码为数字。 用法 $ data = array ( 'foo' => 'bar' );...
大家都知道,json_encode通常会把json中的汉字转义成unicode,但是这并不一定是我们想要的。有时候,我们需要获得汉字形式的json字符串,比如需要获得gbk编码的json字符串(只要把汉字形式的字符串转码就可以得到了)...
`json_encode()`有多个可选参数,如`JSON_PRETTY_PRINT`用于美化输出,`JSON_UNESCAPED_UNICODE`保留中文字符不转义。 2. `json_decode()`函数:这个函数用于将JSON字符串解码为PHP值。如果第二个参数`true`,返回...
$encodedData = json_encode($data, JSON_UNESCAPED_UNICODE); ``` 这样得到的JSON字符串中,中文字符将保持原样,而不是转义为Unicode形式。 2. **手动处理**:如果微信API确实要求不转义的中文字符,你也可以...
升级后可以使用JSON_UNESCAPED_UNICODE选项,从而在编码时避免中文字符的Unicode转义,让json_encode的行为更符合中文用户的需求。 总结来说,在处理中文字符与JSON编码的问题时,最好的做法是更新PHP版本至5.4或更...
echo json_encode(“中文”, JSON_UNESCAPED_UNICODE); 添加参数:JSON_UNESCAPED_UNICODE即可。 测试环境: PHP Version 5.5.36 js中 1. 编码 var str = obj.toJSONString();//需要JSON解析器或工具类 2. 解码 ...