【问题标题】:json_encode not working uft8 content phpjson_encode 不工作 uft8 内容 php
【发布时间】:2018-06-10 18:21:07
【问题描述】:

我必须显示本地数据库中的 json 数据,这是 Bangla 字体。正常打印此数据时正常工作,但使用json_encode时不显示正确数据,表字段设置uft8。

这是我尝试过的代码:

$mysqli = new mysqli("localhost", "root", "", "newspaper");
mysqli_set_charset($mysqli,"utf8");
$stmt = $mysqli->prepare("SELECT news_title FROM news_content ORDER BY id DESC limit 2");
$stmt->execute();
$result = $stmt->get_result();

while ($myrow = $result->fetch_assoc()) {
    $data[] =  $myrow['news_title'];
}
print_r($data);
echo json_encode($data);

这是print_r($data);时的输出:

Array
(
    [0] => বুলবুলির ছানা
    [1] => টনি ডায়েসের প্রিয় সামিনা চৌধুরী, মেয়ের সেলেনা গোমেজ
)

和:

 echo json_encode($data); 

输出是:

["\u09ac\u09c1\u09b2\u09ac\u09c1\u09b2\u09bf\u09b0 \u099b\u09be\u09a8\u09be","\u099f\u09a8\u09bf \u09a1\u09be\u09df\u09c7\u09b8\u09c7\u09b0 \u09aa\u09cd\u09b0\u09bf\u09df \u09b8\u09be\u09ae\u09bf\u09a8\u09be \u099a\u09cc\u09a7\u09c1\u09b0\u09c0, \u09ae\u09c7\u09df\u09c7\u09b0 \u09b8\u09c7\u09b2\u09c7\u09a8\u09be \u0997\u09cb\u09ae\u09c7\u099c"] 

我也试过了:

echo json_encode($data, JSON_UNESCAPED_UNICODE);

和:

header('Content-Type: application/json');
echo json_encode($data, JSON_UNESCAPED_UNICODE);

我不确定是哪个问题,所以任何帮助都会对我很有帮助。

【问题讨论】:

  • 如果你尝试echo json_encode($data, JSON_UNESCAPED_UNICODE);,输出是什么?
  • 那么,您从 JSON_UNESCAPED_UNICODE 的尝试中得到了什么?请再做一次测试:echo bin2hex($data[0]); 如果应该得到e0a6ac e0a781 e0a6b2 e0a6ac e0a781 e0a6b2 e0a6bf e0a6b0 20e0a6 9be0a6 bee0a6 a8e0 a6be(没有任何空格)。如果你不这样做......
  • @PriidkVaikla 使用 json_encode($data, JSON_UNESCAPED_UNICODE); 时输出相同;
  • @PriidkVaikla 现在它正在工作,我认为还有其他问题,写下答案然后我会接受它,我不确定是什么问题以及为什么现在工作。

标签: php mysql json utf-8


【解决方案1】:

正确的方法是使用json_encodeJSON_UNESCAPED_UNICODE 标志。 这样 Unicode 字符就不会被转义了。

【讨论】:

    猜你喜欢
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多