在PHP的json_encode截断之前转义JSON撇号?

时间:2013-02-26 19:23:36

标签: php getjson json

我在MySQL数据库(utf8_general_ci)中有一个包含卷曲(智能?)撇号的字段:Owner’s...

如果我访问从数据库中提取它的PHP页面,这打印很好,没有特殊处理。但是,我试图通过另一个页面上的$ .getJSON请求来访问它,所以我使用了PHP的json_encode。它会截断该值,使其读取Owner,然后成功编码其余数据。如果我在json_encode之前在字段上使用PHP的utf8_encode,则它包含编码为\u0092的完整值,然后在页面上不打印任何内容,只给我Owners。 PHP的htmlentitieshtmlspecialchars无效。

查看Chrome工具中的请求,Owner’s在$ .getJSON页面上显示为Owner�s

任何人都可以帮助我吗?我已经阅读了关于SO和网络的其他问题,但我找不到任何有用的东西,而且我没有使用JSON。

感谢阅读。

2 个答案:

答案 0 :(得分:8)

详细信息:json_encode

示例:

echo json_encode($array, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE);

答案 1 :(得分:7)

utf8_encode()之前使用PHP的json_encode()确实会阻止数据在之后切断,但它也会将其编码为\0092,但不显示(控制字符) )。当我在查询之前使用MySQL的SET NAMES utf8时,我根本不必使用utf8_encode(),我的json被正确编码,映射到\u2019,显示得很好

感谢链接@Pekka,它帮助我缩小了可能性。