99久久国产露脸精品麻豆,欧美日韩精品小说,亚洲免费在线美女视频,国产三级中文字幕,91极品国产情侣高潮对白,国产亚洲一区二区三区不卡片,欧美jizz精品欧美性,久久国产精品久久国产片

json_encode不轉義中文漢字的方法

袁志蒙 7542次瀏覽

摘要:最近在開發接口,用的是json格式,但是json_encode后出現了類似"\u5c0f\u8c61" 的unicode字符。 那么如何才能使json_encode不轉義漢字呢? 方法1 如果你的php版本是5.4+, 那么恭喜你,一個參數JSON_UNESCAPED_UNICODE就能搞定...

最近在開發接口,用的是json格式,但是json_encode后出現了類似"\u5c0f\u8c61" 的unicode字符。

那么如何才能使json_encode不轉義漢字呢?

方法1

如果你的php版本是5.4+, 那么恭喜你,一個參數JSON_UNESCAPED_UNICODE就能搞定,如:


$arr = array('name'=>'張三','sex'=>'男','address'=>array('中國','河北','邯鄲',array('邯鄲','邯鄲學院')));

echo json_encode($arr, JSON_UNESCAPED_UNICODE);

方法2

如果不幸由于種種原因你的php無法升到高版本,那么就要自定義函數了:

首先我在網上找了好多方法,思路是先把字段中的中文urlencode, 在json_encode后將得到的字串整體urldecode,網上提供的解決方法是這樣的:


foreach($array as $key => $value){  
	$jsonstr[$key] = urlencode($value);
}
$jsonstr = urldecode(json_encode($jsonstr));

這種方法很巧妙,但是只能對于一維數組管用,如果數組是多維的,就不能用了,于是我經過多次測試,寫出了一個兼容多維數組的方法:

$arr = array('name'=>'張三','sex'=>'男','address'=>array('中國','河北','邯鄲',array('邯鄲','邯鄲學院')));
function my_json_encode($array){
	if(version_compare(PHP_VERSION,'5.4.0','<')) {
		foreach($array as $key => $value){  
			if(!is_array($value)){
				$jsonstr[$key] = urlencode($value);
			}else{
				$jsonstr[$key] = urlencode(my_json_encode($value));
			}
		}  
		$jsonstr = urldecode(json_encode($jsonstr)); 
		$jsonstr = str_replace(']"', ']', str_replace('"[', '[', $jsonstr)); 
	}else{
		$jsonstr = json_encode($array, JSON_UNESCAPED_UNICODE);  //必須PHP5.4+  
	}	
	return $jsonstr;
}


$jsonstr = my_json_encode($arr);  
var_dump($jsonstr);
隨機內容

表情

共2條評論
  • 網友評論:

    感謝,可以正常顯示中文了。

    2020-03-04 14:26:24 回復

    點擊加載
  • 網友評論:

    膜拜一下

    2017-05-04 16:08:46 回復

    點擊加載