在php中解析带有葡萄牙语字符的数组时出现Json_encode问题



结果数组如下

$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":"Paiu00e7u00e3o","cidade":"Su00e3o Paulo"},{"nome":"Paiu00e7u00e3o","cidade":"Su00e3o Paulo"}]

请任何人有想法转换这个数组为相同的字符在php

谢谢,

使用 JSON_UNESCAPED_SLASHES 在json_encode.

像这样做

<?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;

我找到了解决方案,谁使用以下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");

尝试使用这个函数包装整个json_encode():

utf8_encode(json_encode());

另一方面,如果你要做的是从mysql发送和解析数据,你应该定义到utf8的连接:

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

最新更新