我通过php数组
[sit_latitude] => 20° 23.298' N
Run Code Online (Sandbox Code Playgroud)
在json_encode()中; 和输出就像,
{"sit_latitude":null}
Run Code Online (Sandbox Code Playgroud)
它显示为null,如何解决这个问题?
我的代码片段
...
$stmt->bindParam("id", $_GET[id]);
$stmt->execute();
$employee = $stmt->fetchObject();
$dbh = null;
echo '{"item":'. json_encode($employee) .'}';
Run Code Online (Sandbox Code Playgroud)
Shw*_*wet 11
我尝试和成功的地方有点奇怪,但工作,所以让我与你分享.
$latitude = json_encode(utf8_encode($emplyoee['sit_latitude']));
$longitude = json_encode(utf8_encode($employee['sit_longitude']));
$emplyoee['sit_latitude'] = $latitude;
$emplyoee['sit_longitude'] = $longitude;
Run Code Online (Sandbox Code Playgroud)
现在传递像
echo '{"item":'. json_encode($employee) .'}';
Run Code Online (Sandbox Code Playgroud)
这将解决您的问题
json_encode假定其输入中的字符串是有效的UTF-8(请记住,PHP字符串是字节序列,而不是Unicode代码点的序列).如果您的文本编辑器未设置为使用该编码(并且您没有使用十六进制转义码(例如\xc2\xb0双引号字符串)手动生成UTF-8 ),则字符串将被编码为null(因为它不是有效的UTF -8).
其他常见的字符集(例如Windows-1252)也是ASCII的超集,因此如果存在任何非ASCII字符(包括U + 00B0 DEGREE SIGN),这只是一个问题.
即使字符串是有效的UTF-8,默认情况下,json_encode也会输出\u00b0而不是实际的度数符号.对于使用PHP json_decode或JavaScript JSON.parse进行编程解码,这不是一个问题,它可以理解JSON十六进制转义序列.
(在PHP 5.4中,有一个JSON_UNESCAPED_UNICODE标志可以防止这种转义.但是,许多Web服务器仍然具有PHP 5.3或更早版本,并且该标志甚至可以解决有问题的字符U + 2028 LINE SEPARATOR和U + 2029 PARAGRAPH SEPARATOR.有可能在两行代码中模拟标志,尽管如上所述,你无论如何都不必.)
| 归档时间: |
|
| 查看次数: |
3278 次 |
| 最近记录: |