我们知道,默认情况下,json_encode()会把中文转码成“\u6709\u975e\u6cd5\u5173”这样的格式,这个其实是Unicode编码。

在一些特定的情况下,我们希望使用json_encode()转码时,不对中文进行转码,那有没有什么办法可以实现呢?

我们来试想一下,json_encode()默认会对中文转码,我们能不能在参数传入之前先变成别的样子,等json_encode之后再变回来呢?是不是一下子就想到了urlencode?对,就用它。代码如下:

$str = urlencode($str);

$arr = new array('str'=>$str);

$json = json_encode($arr);

$json = urldecode($json);

这样写都看明白了吧,但有点麻烦了,对吧。其实在PHP5.4版本后,可以使用JSON_UNESCAPED_UNICODE参数来控制json_encode函数,让其不对中文文字进行转码。代码如下:

$data = json_encode($data, JSON_UNESCAPED_UNICODE);

好了,设置PHP的json_encode方法不对中文进行Unicode转码,本文就介绍这么多,希望对大家有所帮助!

03-14 01:51