【发布时间】:2014-01-08 18:23:45
【问题描述】:
使用 json_encode 对数组进行编码时,包含特殊字符的数组元素将转换为空字符串:
$arr = array ( "funds" => "ComStage STOXX®Europe 600 Techn NR ETF", "time"=>....);
$json = json_encode($arr);
在 JSON 编码后,元素 [funds] 为空。它只发生在特殊字符(版权、商标等)上,例如“ComStage STOXX®Europe 600 Techn NR ETF”中的字符。
有什么建议吗?
谢谢
更新:这是在填充数组之前解决问题的方法(所有名称均来自数据库):
$mysqli->query("SET NAMES 'utf8'");
【问题讨论】:
-
并非所有特殊字符都是 UTF8。非常 ASCII 的“大于”和“小于”会在 json 编码的字符串中造成严重破坏。我今天刚接了案子。 htmlentities() 或 htmlenspecialchars() 虽然做了他们的工作,但没有提供解决方案。现在我不得不用加号和减号替换它们,以避免 FF 将它们解释为 HTML 标记的开始和结束字符。欢迎任何其他解决方案。