Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
学位'°';php json_encode函数中未显示字符,如何显示?_Php_Json - Fatal编程技术网

学位'°';php json_encode函数中未显示字符,如何显示?

学位'°';php json_encode函数中未显示字符,如何显示?,php,json,Php,Json,我通过php数组 [sit_latitude] => 20° 23.298' N 内部json_encode();而产出就像 {"sit_latitude":null} 显示为空,如何解决 我的代码片段 ... $stmt->bindParam("id", $_GET[id]); $stmt->execute(); $employee = $stmt->fetchObject(); $dbh = null; echo '{"item":'. json_encode

我通过php数组

[sit_latitude] => 20° 23.298' N
内部json_encode();而产出就像

  {"sit_latitude":null}
显示为空,如何解决

我的代码片段

...
$stmt->bindParam("id", $_GET[id]);
$stmt->execute();
$employee = $stmt->fetchObject();
$dbh = null;
echo '{"item":'. json_encode($employee) .'}';
-这篇文章可能会对你有所帮助

只需将degree作为
\u00f8C
传递,然后用js对其进行解码。

假定其输入中的字符串是有效的(请记住,PHP字符串是字节序列,而不是Unicode代码点序列)。如果您的文本编辑器未设置为使用该编码(并且您没有在双引号字符串中使用十六进制转义码(如
\xc2\xb0
)手动生成UTF-8),则该字符串将被编码为
null
(因为它不是有效的UTF-8)

其他常见的字符集(例如)也是ASCII的超集,因此只有在存在任何非ASCII字符(包括U+00B0度符号)时才会出现问题

即使字符串是有效的UTF-8,默认情况下,json_encode将输出
\u00b0
,而不是实际的度符号。这对于使用PHP或JavaScript的编程解码来说不是问题,因为PHP或JavaScript理解JSON十六进制转义序列


(在PHP5.4中,有一个
JSON_UNESCAPED_UNICODE
标志来防止这种转义。但是,许多web服务器仍然使用PHP5.3或更早版本,并且该标志甚至可以转义有问题的字符U+2028行分隔符和U+2029段分隔符。可以在两行代码中模拟该标志,尽管如我上面所解释的,您可以使用你可以试试htmlspecialchars()函数

我尝试并成功的方法有点奇怪,但是很有效,所以让我与你分享

$latitude = json_encode(utf8_encode($emplyoee['sit_latitude']));
$longitude = json_encode(utf8_encode($employee['sit_longitude']));

   $emplyoee['sit_latitude'] = $latitude;
    $emplyoee['sit_longitude'] = $longitude;
现在就这样过去了

echo '{"item":'. json_encode($employee) .'}';

这将解决您的问题

请发布真实的php代码和您的语言环境配置。我猜您的文件没有保存为UTF-8。请注意,JSON不是HTML。htmlspecialchars根本不会转义度符号,因此它不会有帮助。事实上,在php 5.4安装中,该函数甚至可能会为询问者返回一个空字符串(由于UTF-8无效)。