php - 如何放入 JSON Object 非英文字母?
问题描述
我是安卓开发者。我通过 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"}
在我的“标题”数据库中,它是:utf8mb4_unicode_520_ci,对于“文本”它是:utf8_unicode_520_ci
(我不知道有什么区别,只是在其中一个有效的情况下让它有所不同)
如何使用 JSON 对象显示俄语字母(和其他非英语)?
解决方案
$someJSON = json_encode($someArray, JSON_UNESCAPED_UNICODE);
很好。问题在别处。请参阅此处的“问号”
最可能的原因/修复:
数据库表中的列不是CHARACTER SET utf8
(或utf8mb4)。解决这个问题。(用 验证SHOW CREATE TABLE
。)
注意:JSON 确实有问号;无法从中恢复数据。您必须返回并重建 JSON。
推荐阅读
- c++ - 使用两个线程和 system() 命令运行 shell 脚本:如何确保一个 shell 脚本先于另一个启动
- angularjs - 在控制器中使用 AngularJS 对带有数字的字符串进行排序
- reactjs - 如何创建依赖于material-ui的组件库?
- azure - 自动将数据盘附加到虚拟机后如何初始化磁盘?
- node.js - Zeit now.json => 部署后出现错误
- reactjs - 外部 Css 在 Gatsby 反应项目中不起作用
- knockout.js - 必需属性不起作用敲除绑定输入
- ios - 隐藏按钮时navigationBarItems位置不一致
- wordpress - 调用 3rd 方 api 在 woocommerce 中创建新订单
- c# - CS1503 无法将 Matrix 转换为 MatrixOrder