俄语字符的json_encode错误

时间:2016-11-25 07:16:04

标签: php json unicode utf-8 cyrillic

我遇到了json_encode的输出问题。我需要输出俄文字符。

在我的数据库表中只有俄文字符。在输出中,我只得到"????????"个问号替换俄语字符。我读了许多类似的问题,但没有一个提供真正的解决方案。我尝试了以下但没有一个帮助。

以下是我的PHP代码。

  1. 添加了``header('Content-type:application / json; charset = utf-8');`
  2. 使用json_encode($albums, JSON_UNESCAPED_UNICODE);
  3. 试过mb_convert_encoding($str, 'UTF-8', 'auto'); json_encode($ albums,JSON_UNESCAPED_UNICODE);
  4. <?php
        $host ="localhost";
        $user ="misollar_user";
        $pass="12345";
        $db="misollar_db";
        header ('Content-type: application/json; charset=utf-8');
        $con = mysqli_connect($host,$user,$pass,$db);
        $query = "select * from albums;";
        $result = mysqli_query($con, $query);
        $albums = array();
        while ($row = mysqli_fetch_array($result)){
            array_push($albums,array('id'=>$row[0], 'name'=>$row[1], 'songs_count'=>$row[2]));
        }
        mysqli_close($con);
        echo json_encode($albums, JSON_UNESCAPED_UNICODE);
    ?>
    

1 个答案:

答案 0 :(得分:0)

在从mysql检索结果之前,您需要设置UTF8

在您从albums表中检索结果之前,请在查询下方触发:

mysqli_query($con, 'SET names UTF8');

在此之后,您可以获取相册结果:

$query = "select * from albums;";
$result = mysqli_query($con, $query);