Charset Utf8无法使用json编码

时间:2016-01-30 13:26:38

标签: php json utf-8

我有一个php文件来返回json,但结果不正确。

  

Ex:LậpTrìnhỨngDụngindatabase => L?pTrình?ng D?ng in view

这是php文件

  <?php 
    $mysql = new mysqli('localhost','root','','freelancer');
    $result = $mysql->query("select * from tag");
    $rows = array();
    while($row = $result->fetch_array(MYSQL_ASSOC)) {
        $rows[] = array_map("utf8_encode", $row);
    }
    echo json_encode($rows);
    ?>

希望每个人都可以帮助我。谢谢阅读

1 个答案:

答案 0 :(得分:0)

utf8_encode()仅适用于iso-8895-1编码的字符串。由于您的字符串包含非拉丁字符,因此您的数据无法在iso-8895-1中进行编码,因此utf8_encode()肯定无法正常工作。

相反,您需要通过向连接配置添加set_charset("utf8")来要求MySQL返回以UTF-8编码的数据。现在您有UTF-8编码的字符串,您不再需要重新编码它。

您的新代码应如下所示:

<?php 
    $mysql = new mysqli('localhost','root','','freelancer');
    $mysql->set_charset("utf8")

    $result = $mysql->query("select * from tag");
    $rows = array();
    while($row = $result->fetch_array(MYSQL_ASSOC)) {
        $rows[] = $row;
    }
    echo json_encode($rows);
?>