0

尝试使用 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);
4

2 回答 2

1

http://codepad.org/oWMMVwsE

PHP 将对 utf8 字符进行编码。

http://jsfiddle.net/

jQuery 可以很好地解析它。

如果您将其回显到浏览器,请不要忘记浏览器将解释 utf8 编码并显示字符。因此必须从 CLI 或源中读取 json 编码的字符串。

于 2012-06-08T15:35:12.360 回答
1

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

  },
}

这是无效的 JSON。看起来您的 PHP 副本具有严重损坏的json_encode.

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

于 2012-06-08T15:36:49.810 回答