【问题标题】:Null php json while econde a query from mySQL with accents [duplicate]空 php json 同时从带有重音符号的 mySQL 进行查询 [重复]
【发布时间】: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 的任何程序函数都不会抛出任何东西。

标签: php mysql json


【解决方案1】:

json_encode 假设结果为 UTF-8 编码,如果不返回 null

首先验证您的数据库服务器是否配置了 UTF_8

或在咨询前添加set_charset

mysqli_set_charset($conn,"utf8");

使用header修改HTTP头,UTF-8一路贯穿

header('Content-Type: text/html; charset=utf-8');

【讨论】:

    【解决方案2】:

    它的工作正常检查Click Here

    <?php
     echo json_encode("Olá ",JSON_UNESCAPED_UNICODE);
    ?>
    

    【讨论】:

      猜你喜欢
      • 2016-12-15
      • 2014-11-11
      • 2010-11-28
      • 1970-01-01
      • 2014-12-29
      • 2021-12-12
      • 2015-06-02
      • 2018-09-13
      • 1970-01-01
      相关资源
      最近更新 更多