我在MySQL数据库(utf8_general_ci)中有一个包含卷曲(智能?)撇号的字段:Owner’s...
如果我访问从数据库中提取它的PHP页面,这打印很好,没有特殊处理。但是,我试图通过另一个页面上的$ .getJSON请求来访问它,所以我使用了PHP的json_encode。它会截断该值,使其读取Owner
,然后成功编码其余数据。如果我在json_encode之前在字段上使用PHP的utf8_encode,则它包含’
编码为\u0092
的完整值,然后在页面上不打印任何内容,只给我Owners
。 PHP的htmlentities
和htmlspecialchars
无效。
查看Chrome工具中的请求,Owner’s
在$ .getJSON页面上显示为Owner�s
。
任何人都可以帮助我吗?我已经阅读了关于SO和网络的其他问题,但我找不到任何有用的东西,而且我没有使用JSON。
感谢阅读。
答案 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,它帮助我缩小了可能性。