2014-05-14 93 views
0

解析與葡萄牙的字符數組時,我有結果陣列如下json_encode問題在PHP

$array = array(array('nome'=>'Paição','cidade'=>'São Paulo'),array('nome'=>'Paição','cidade'=>'São Paulo')); 

當我編碼相同的陣列在PHP json_encode它不會返回的數組一樣,它返回如下JSON字符串

$json = json_encode($array); 
$result = [{"nome":"Pai\u00e7\u00e3o","cidade":"S\u00e3o Paulo"},{"nome":"Pai\u00e7\u00e3o","cidade":"S\u00e3o Paulo"}] 

請任何人有想法,這個陣列相同的字符轉換成PHP

謝謝,

+0

你使用utf-8編碼嗎? – briosheje

+0

您使用的是哪個版本的PHP? – Mohebifar

+0

是的,我使用UTF-8編碼, 和我使用PHP版本5.2.17 – MRJethva

回答

0

我發現下面的5.4版本的PHP誰使用的解決方案,

$arr = array(array('nome'=>'Paição','cidade'=>'São Paulo'),array('nome'=>'Paição','cidade'=>'São Paulo')); 

$array = preg_replace("/\\\\u([a-f0-9]{4})/e", "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", json_encode($arr)); 

結果的上面是一樣傳遞價值

[{"nome":"Paição","cidade":"São Paulo"},{"nome":"Paição","cidade":"São Paulo"}] 

,你有還要設置mysql_query(「SET NAMES utf8」); mysql連接後。

2

在json_encode中使用JSON_UNESCAPED_SLASHES

做這樣

<?php 
$array = array(array('nome'=>'Paição','cidade'=>'São Paulo'),array('nome'=>'Paição','cidade'=>'São Paulo')); 
$json = json_encode($array,JSON_UNESCAPED_UNICODE); 
echo $json; 
+0

感謝您的回答,但給出錯誤注意:使用未定義常量JSON_UNESCAPED_UNICODE - 假設'JSON_UNESCAPED_UNICODE',我有PHP 5.3.10版本。 任何人都有PHP 5.2到5.4版本之間的任何解決方案excpet JSON_UNESCAPED_SLASHES? – MRJethva

0

嘗試使用此功能包裹整個json_encode():

utf8_encode(json_encode()); 

在另一方面,如果你在做什麼是發送和從MySQL的數據進行解析,你應該定義爲utf8連接:

$conn= mysqli_connect($dbhost, $dbuser, $dbpass, $dbname); 
mysqli_set_charset($conn,'utf8');