当我在json中检索数据时,我无法获得我的本地语言,而是获得unicode

时间:2014-12-19 08:10:58

标签: php html mysql json unicode

我在数据库中存储unicode tamil字符我试图使用php在浏览器中显示它来检索它。我把它放在数组中并在json中获取它。 我得到以下输出

{
"product_id":"29",
"download_id":"ebbe8e1e1f4649bb8a51468828100d91",
"order_key":"wc_order_5492e914ee249",
"post_title":"\u0ba4\u0bae\u0bbf\u0bb4\u0bcd \u0bae\u0bc2\u0bb2\u0bbf\u0b95\u0bc8\u0b95\u0bb3\u0bcd \u0b89\u0ba3\u0bb5\u0bc1\u0b95\u0bc1\u0b95\u0bb3\u0bcd",
"status":"true"
}

我使用以下代码,

$sql = "SELECT wdp.product_id, wdp.download_id, wdp.order_key, wp.post_title
FROM product_permissions wdp, posts wp
WHERE wdp.user_email =  'testemail@gmail.com'
AND wdp.product_id = wp.ID";

$result = mysql_set_charset( 'utf8' );      
$result = mysql_query($sql);
$int_num_field = mysql_num_fields($result);     
while($row = mysql_fetch_array($result)){       
     $arr_col = array();
     for($i=0;$i<$int_num_field;$i++){
         echo $row[$i];
         $arr_col[mysql_field_name($result,$i)] = $row[$i];
     }
     $arr_col['status']= 'true';
     array_push($json,$arr_col);        
}       
array_push($person,$json);
$main = array('products'=>$json);
echo json_encode($main);

1 个答案:

答案 0 :(得分:0)

试试这个 echo json_encode($main,JSON_UNESCAPED_UNICODE);

在php 5.4+中,php的json_encode确实有用于普通输出的JSON_UNESCAPED_UNICODE选项。在较旧的php版本中,您可以推出自己的不编码非ASCII字符的JSON编码器,或使用Pear's JSON编码器。

修改

或者您可以尝试此功能

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

source