【发布时间】:2016-08-30 18:20:00
【问题描述】:
当我尝试对 JSON 进行编码时,来自 MySQL 数据库的查询会在单词有重音时给我一个空 JSON,例如。 “olá”、“à”等
我的php代码:
$sql = "SELECT `name`
FROM `login`
WHERE `id`='1';";
$result = mysqli_query($conn, $sql);
$emparray = array();
while($row = mysqli_fetch_assoc($result)){
$emparray[] = $row;
}
echo json_encode($emparray,JSON_UNESCAPED_UNICODE);
我的数据库:
id | name |
1 | Olá |
【问题讨论】:
-
你用的是什么版本的php?
JSON_UNESCAPED_UNICODE常量是在 php 5.4 中添加的,这意味着如果您使用的是旧版本,json_encode将返回 null 并引发通知(未定义的常量)和警告(无效参数)错误。除此之外,我没有看到代码 (3v4l.org/HqIvU) 有问题,所以我会从通常开始,检查错误日志。 -
您对表“登录”使用哪种编码和排序规则?您是否尝试从 PHP 手动填充 $emparray?
-
我的php版本是5.6.23
-
第一步:ensure you are utf-8 all the way down。不要指望编码兼容性在没有明确告诉所有内容确切你需要什么的情况下工作。
-
@JonathanKuhn:术语:json 不会“抛出”任何东西。它发出通知。 PHP 的任何程序函数都不会抛出任何东西。