gpt4 book ai didi

php - json_encode 为以项目符号为字符的字段返回 null

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:56:25 25 4
gpt4 key购买 nike

我有一个噩梦 JSON 编码来自 MSSQL 的数据库结果。它对所有内容进行编码,但任何带有字符的字段(例如项目符号)都会返回 NULL

我搜索了 SO 查看其他类似的问题和答案,但没有一个对我有用,所以我在这里发帖

我已经在我的本地机器 (Windows) 上进行了测试,它可以使用 PDO。我已经在未来的生产服务器 (Linux) 上对其进行了测试,但没有。两个php版本都是5.4.9

无法升级/更改生产服务器的任何内容。

这是有问题的代码

<?php
ini_set('mssql.charset', 'UTF-8');

$server = 'XXXXXXX';

// Connect to MSSQL
$link = mssql_connect($server, 'XXXXXXXX', 'XXXXXXXX');

if (!$link) {
die('Something went wrong while connecting to MSSQL');
}

mssql_select_db('XXXXXXX', $link);

$sql = "SELECT * FROM table WHERE view.[column] = 'XXXXXXX'";

$query = mssql_query($sql);

$rows = array();

while ($row = mssql_fetch_array($query, MSSQL_ASSOC)) {
$rows[] = $row;
}

// Clean up
mssql_free_result($query);

$json = array();

foreach($rows as $row) {
foreach($row as $key => $value) {
$json[$key] = trim($value);
}
}

var_dump($rows);
exit;

echo json_encode($json);

最佳答案

显然,数据库的输出不是 UTF-8 编码的。 According to the PHP docs , json_encode() 的所有输入都必须是 UTF-8。

例子:

$test = array('foo' => 'äöü', 'bar' => 'äöü');
$test['foo'] = mb_convert_encoding($test['foo'], 'ISO-8859-1', 'UTF-8');
echo json_encode($test);

结果:

{"foo":null,"bar":"\u00e4\u00f6\u00fc"}

解决方案:将您的数据库输出转换为 UTF-8。

关于php - json_encode 为以项目符号为字符的字段返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25604165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com