php处理字符集



我对发送到datatable.net的json进行编码时遇到问题。我收到DataTables警告:"table id=variationTable-无效的JSON响应。有关此错误的详细信息,请参阅http://datatables.net/tn/1."检查了开发工具。我发现没有回应。json_encode显然有问题。我看了看唱片。它在处理ascii代码160时似乎有问题。在我的本地计算机上运行的相同代码(运行xampp(。没有问题。

我试着回显页面。我在远程服务器上看到无法读取的字符,但没有本地主机。远程服务器上的输出:Alma��本地主机上的输出:Alma(注意Alma后面有空格(。

php代码完全相同。我只是想知道本地php设置是否不同,以便特殊字符能够正确处理。

谢谢。

以下是php代码中的一些代码,这些代码接收记录并作为Json返回。代码相当长。我正在发布获取记录并以json形式返回的部分。上面已经发布了错误消息:Json响应无效(实际上没有响应(。每当我导航到包含特殊字符的记录时,就会发生这种情况。同样,我只在远程主机上得到错误,而不是在本地主机上。这让我相信这是配置问题,因为本地主机和远程机器上的源代码是相同的。

$totalQuery = mysqli_query($conn, $sql);
$totalRowCount = mysqli_num_rows($totalQuery);
if($_POST['length'] != -1){
$start = $_POST['start'];
$length = $_POST['length'];
$sql .= " LIMIT " . $start . ", ". $length;
}

$filteredQuery = mysqli_query($conn, $sql);
$filteredRowCount = mysqli_num_rows($filteredQuery);
$data = array();
$counter;
while($row = mysqli_fetch_assoc($filteredQuery))
{
$counter += 1;
$sub_array = array();
$sub_array[] = $row['variety_name'];
$sub_array[] = $row['abbreviation'];
$sub_array[] = $row['fig_family_name'];
$sub_array[] = $row['variety_id'];
$data[] = $sub_array;

}
$output = array(
'draw'=> intval($_POST['draw']),
'recordsTotal' =>$totalRowCount,
'recordsFiltered'=>$totalRowCount,
'data'=>$data,
);

echo  json_encode($output);

我在远程服务器上启用了mbstring。错误消失了。

我注意到了未处理的字符的其他问题,不得不使用$newName=mb_convert_encoding($string,"UTF-8","ISO-8859-1"(来强制从ISO-8859-1转换为UTF-8。现在错误完全消失了。

最新更新