我的结果数组如下
$array = array(array('nome'=>'Paição','cidade'=>'São Paulo'),array('nome'=>'Paição','cidade'=>'São Paulo'));
当我用php中的json_encode编码相同的数组时,它不会像数组一样返回它返回如下json string
$json = json_encode($array);
$result = [{"nome":"Pai\u00e7\u00e3o","cidade":"S\u00e3o Paulo"},{"nome":"Pai\u00e7\u00e3o","cidade":"S\u00e3o Paulo"}]
请有人知道将此数组转换为php中的相同字符
谢谢,
答案 0 :(得分: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;
答案 1 :(得分: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 :(得分:0)
尝试使用此函数包装整个json_encode():
utf8_encode(json_encode());
另一方面,如果你正在做的是从mysql发送和解析数据,你应该定义与utf8的连接:
$conn= mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
mysqli_set_charset($conn,'utf8');