2

我正在尝试JSON_encode从 MySQL 数据库中获取数据。数据库中的字符应如此。

例如,一些数据包含以下内容:è

当我打印到浏览器时,这是所有具有特殊字符的项目的结果:

{"category":null}

这是我用来测试的代码的非常基本的淡化版本:

$sql = mysql_query("SELECT category FROM master_cat ORDER BY category ASC");
    while ($row = mysql_fetch_assoc($sql))
        $output[] = $row;

print(json_encode($output));

当我在网页上阅读 JSON 而不是时,如何让实际数据出现在浏览器中null

4

2 回答 2

4

您可以utf8_encode在文本字段上使用,但您可以检查数据是否确实存在?也许以 HTML 格式而不是 JSON 编码输出数据?因为在我的系统上 UTF8 要么被识别,要么给出错误,要么某些字符被截断。

NULL 数据库数据丢失的气味。

如果数据在那里,那么:

mysql_query('SET NAMES utf8;');
$sql = mysql_query("SELECT category FROM master_cat ORDER BY category ASC");
while ($row = mysql_fetch_assoc($sql))
    $output[] = array_map('utf8_encode', $row);

print(json_encode($output));

您可能还想明确指定 MIME 类型和字符集:

Header('Content-Type: application/json; charset=UTF-8');

请参阅什么是正确的 JSON 内容类型?

于 2012-09-12T22:58:00.253 回答
2

您应该使用 JSON_UNESCAPED_UNICODE对多字节 Unicode 字符进行逐字编码(默认转义为 \uXXXX)。自 PHP 5.4.0 起可用。在这种情况下:

echo json_encode($output, JSON_UNESCAPED_UNICODE);
于 2015-06-25T16:40:33.467 回答