自己的範例-------------------------------------------------------------
$response = array(); $response = array(); $response["success"] = 1; $response["products"] = array(); $product = array("國家"=>"台灣","首都"=>"台北"); array_push($response["products"], $product); // product 放入 products array $product = array("國家"=>"日本","首都"=>"東京"); array_push($response["products"], $product); // product 放入 products array $product = array("國家"=>"中國","首都"=>"北京"); array_push($response["products"], $product); // product 放入 products array $encode = json_encode( $response ); //傳回 array包物件 //$encode = json_encode( $response ,JSON_FORCE_OBJECT ); //傳回 物件包物件 $decode = json_decode( $encode ); //json_decode if (!empty($decode)){ foreach ($decode->products as $blog) { echo $blog->首都; } } echo "------------------------------------------------------------------
"; var_dump( $decode->success ); echo "
"; var_dump( $decode->products[0] ); //echo "
"; var_dump( ( (array)$decode->products ) ); //物件轉型成 array echo "
"; var_dump( $decode->products );
PHP 底層已經做了unicode 處理。
echo json_encode($arr);
以上代碼執行後輸出:
{“a”:”\u5317\u4eac”}
如果嫌它不夠直觀,可以利用urlencode 和urldecode 方法繞過這個轉碼為unicode 的過程:
$arr = array ('a'=>urlencode('北京'));
echo urldecode(json_encode($arr));
以上代碼執行後輸出:{“a”:”北京”}
但是对于抓取来的 json 我们没办法修改别人的服务器,有这么一个方法可处理;
$code = json_encode($str);
$code = preg_replace("#\\\u([0-9a-f]+)#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '\\1'))", $code);
print_r( mb_convert_encoding(stripslashes($code), "GBK", "UTF-8") );
另:在 php cli 模式下不能输出 utf-8 编码的字符,原因是 cmd 下只能显示 936 编码
处理办法是,把utf-8 编码的内容用 mb_convert_encoding 函数转化一下:如下
处理办法是,把utf-8 编码的内容用 mb_convert_encoding 函数转化一下:如下
mb_convert_encoding("utf-8 的内容", "GBK", "UTF-8");