json_encode没有使用PHP 5.2.8转义UTF-8

时间:2012-06-08 15:25:57

标签: php json

尝试使用jQuery解析时会导致非法的JSON。整个文档,数据库连接采用UTF-8编码。

代码

header('Content-Type: application/json; charset=utf-8');
echo (json_encode($products));

这是输出(已更新)

{
  "D8": {
    "title": "Green A\/C U\/V Dye Self-Measure bottle treats 32 véhicules 8 oz. (237 ml)",
    "image": "http:\/\/www.supercool.ac\/wp-content\/uploads\/2011\/10\/D8.png",
    "Description": "<ul>\n<li>Efficace dans le R-134a et R-12 systèmes de réfrigération<\/li>\n<li>Detectable when exposed to U\/V light<\/li>\n<li>Compatible avec PAG, ester, les huiles minérales et<\/li>\n<li>Ne contient pas de solvants!<\/li>\n<li>Will not harm A\/C systems or recovery equipment<\/li>\n<li>Universal A\/C Dye Safe for Hybrid and<br \>\n&nbsp;Véhicules électriques<\/li>\n<li>Partie # D8<\/li>\n<\/ul>\n"
  }
}

默认情况下,这不应该被转义吗?我该怎么做才能逃脱它?

更新

json_encode正在破坏HTML(描述字段)。它生成了无效<br />的br标记,注意正斜杠。我认为这仅限于5.2.8。为了解决这个问题,我将br标签作为临时解决方案剥离,直到我能说服主机升级。

preg_replace('/\<br\s\/>/', '', string);

2 个答案:

答案 0 :(得分:1)

http://codepad.org/oWMMVwsE

PHP将对utf8字符进行编码。

http://jsfiddle.net/

jQuery可以解析它。

如果您回复浏览器,请不要忘记浏览器会解释utf8编码并显示字符。所以必须从CLI或从源读取json编码的字符串。

答案 1 :(得分:1)

您的输出在最后一个属性值后面有一个逗号:

  },
}

这是无效的JSON。看起来您的PHP副本的执行情况严重受损json_encode

我会尝试使用全新安装的PHP在干净的虚拟机上试用您的代码。