JSON 编码和特殊字符
使用 json_encode() 函数对数组进行编码时,可能会发生包含特殊字符的元素被转换为空字符串。对于版权或商标符号等字符,此行为尤其明显。
要解决此问题,请确保所有字符串数据都经过 UTF-8 编码,然后再将其编码为 JSON。这可以通过将 array_map() 与 utf8_encode() 函数结合使用来实现:
$arr = array_map('utf8_encode', $arr);
$json = json_encode($arr);
正如 PHP 手册中所述,json_encode() 要求所有字符串数据都采用 UTF-8 编码。通过在 JSON 编码之前将数组元素编码为 UTF-8,我们可以确保在 JSON 输出中正确表示特殊字符。
为了清楚起见,让我们比较使用和不使用 UTF-8 编码数组的结果编码:
没有 UTF-8 编码:
$arr = ["funds" => "ComStage STOXX®Europe 600 Techn NR ETF"];
$json = json_encode($arr); // {"funds":null}
使用 UTF-8 编码:
$arr = array_map('utf8_encode', ["funds" => "ComStage STOXX®Europe 600 Techn NR ETF"]);
$json = json_encode($arr); // {"funds":"ComStage STOXX\u00c2\u00aeEurope 600 Techn NR ETF"}
通过应用 UTF-8 编码,特殊字符可以在 JSON 输出中正确表示。请记住一致使用 utf8_encode() 以获得正确的编码。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3