【问题标题】:php encode JSON from mysql db but it shows "???" dataphp 对来自 mysql db 的 JSON 进行编码,但它显示“???”数据
【发布时间】:2017-04-18 20:20:42
【问题描述】:

API 链接::http://www.nobannoo.com/AppLandingPage/text.php

<?php
require_once 'dbconfig.php';
$query = "SELECT * FROM tc_cerealname";
$stmt = $DBcon->prepare($query);
$stmt->execute();
$userData = array();
while($row=$stmt->fetch(PDO::FETCH_ASSOC)){
    $userData['All Cereal Name'][] = $row;  
}
echo json_encode($userData, JSON_UNESCAPED_UNICODE);
?>

输出 :: “id”:“1”, "cereal_name_en": "稻谷", "cereal_name_bn": "???"

所需的输出:: "cereal_name_bn": "ধান"

【问题讨论】:

  • 也许这会有所帮助:stackoverflow.com/questions/23322312/…
  • 没有多大帮助
  • 究竟什么没有帮助?那里的答案提出了与此处相关的两件事:1.)它建议通过添加header('content-type: application/json;charset=utf-8'); 将输出作为JSON 发送(我刚刚添加了一个字符集以确保它是utf-8)2.)它还建议使确保数据库连接也使用 UTF-8。它为 mysqli 描述了它,但在 php.net 上我发现了一条描述 PDO 可能解决方案的评论:secure.php.net/manual/en/pdo.construct.php#113498

标签: php mysql json utf-8


【解决方案1】:

参见Trouble with utf8 characters; what I see is not what I stored中的“问号”

  • 要存储的字节未编码为 utf8/utf8mb4。解决这个问题。
  • 数据库中的列是 CHARACTER SET utf8(或 utf8mb4)。解决这个问题。
  • 另外,请检查读取期间的连接是否为 UTF-8。

你有吗

$DBCon->set_charset('utf8');

(或 utf8mb4)。

但是,我怀疑数据没有正确存储。请参阅该链接中的注释以执行SELECT col, HEX(col) FROM ...

【讨论】:

    猜你喜欢
    • 2019-07-01
    • 2011-11-23
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多