【问题标题】:json_encode error for russian characters俄语字符的 json_encode 错误
【发布时间】:2017-04-09 12:49:54
【问题描述】:

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

【问题讨论】:

  • 抱歉你能在编码前显示数据数组(print_r),那我可以试试
  • 我在 cmets 中提交了上面所有的代码。我不明白你所说的“array(print_r)”是什么意思
  • UTF-8 all the way through的可能重复

标签: php json unicode utf-8 cyrillic


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 谢谢萨米尔,这对我很有帮助。我真的很感谢你的帮助。我一直在谷歌上搜索,并为解决方案挖掘 stackoverflow 好几个小时。再次感谢您。
  • 快乐编码:)
  • 亲爱的 Samir,我设法在浏览器上获取了俄语字符,链接 (misollar.uz/albums.php) 但是当我使用 JSON 解析时,我的 android 应用程序没有读取相同的字符。输出是完全不同的“D”字符,知道如何解决这个问题吗?
  • 首选使用 mysqli_set_charset 将字符集定义为显式 SET NAMES。 MySQL 文档指出,关于 C 函数 mysql_real_escape_string,在 mysqli_real_escape_string 后面:“如果必须更改连接的字符集,请使用 mysql_set_character_set() 函数而不是执行 SET NAMES(或 SET CHARACTER SET)语句。mysql_set_character_set() 的工作方式类似于SET NAMES 但也会影响 mysql_real_escape_string() 使用的字符集,SET NAMES 不会。" (mysql_set_character_set是mysqli_set_character_set后面的C函数)
猜你喜欢
  • 2018-01-02
  • 1970-01-01
  • 1970-01-01
  • 2012-03-20
  • 1970-01-01
  • 2011-10-29
  • 2016-03-02
  • 2019-12-18
  • 2018-04-08
相关资源
最近更新 更多