我是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对象一起显示俄语字母(和其他非英语)?
答案 0 :(得分:0)
$someJSON = json_encode($someArray, JSON_UNESCAPED_UNICODE);
很好。问题出在其他地方。请参阅here
中的“问号”最可能的原因/解决方法:
数据库表中的列不是CHARACTER SET utf8
(或utf8mb4)。解决这个问题。 (使用SHOW CREATE TABLE
进行验证。)
注意:JSON确实带有问号;无法从中恢复数据。您必须返回并重建JSON。