如何放入JSON对象非英文字母?

时间:2018-08-21 12:56:41

标签: php android mysql json utf-8

我是android开发人员。然后通过PHP代码从MySQL数据库中获取数据:

<?php

    $con = mysqli_connect("..........", "...........", "........", "......");

  $query = mysqli_query($con,
           "SELECT * FROM news WHERE status = 'actual' ORDER BY id DESC");
$someArray = [];
$someArray;

  // Loop through query and push results into $someArray;
  while ($row = mysqli_fetch_assoc($query)) {
    array_push($someArray, [
        'id' => $row['id'],
'title' => $row['title'],
'text' => $row['text'],
'date' =>$row['date']
 ]);
  }

  $someJSON = json_encode($someArray);

echo  $someJSON;
?>

它适用于带有英文字母的数据,但是当我尝试在数据库中添加俄语字母或诸如“əçışüöğğ”之类的字母时。 -它不起作用。  我进行了研究,发现我必须添加以下内容:

<meta charset="utf-8"/>

位于PHP代码的顶部,但仍然无法正常工作,然后我进行了更多研究,发现我应该更正$someJSON,并使它看起来像这样:

  $someJSON = json_encode($someArray, JSON_UNESCAPED_UNICODE);

它仍然不起作用

带有俄语字母的部分看起来像这样:

{"id":"4","title":"????????","text":"????????? ??????? ?????, ? ??? ????????? ?? ?????????","date":"21.08.18"}

在我的数据库中“ title”是:utf8mb4_unicode_520_ci 对于“文本”,它是:utf8_unicode_520_ci
(我不知道区别是否会有所不同,以防其中之一起作用)

如何使其与JSON对象一起显示俄语字母(和其他非英语)?

1 个答案:

答案 0 :(得分:0)

$someJSON = json_encode($someArray, JSON_UNESCAPED_UNICODE);

很好。问题出在其他地方。请参阅here

中的“问号”

最可能的原因/解决方法:

数据库表中的列不是CHARACTER SET utf8(或utf8mb4)。解决这个问题。 (使用SHOW CREATE TABLE进行验证。)

注意:JSON确实带有问号;无法从中恢复数据。您必须返回并重建JSON。