我在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显示Owner?s在$ .getJSON页面上.
有人可以帮我从这里出去吗?我已经阅读了关于SO和网络的其他问题,但我找不到任何有用的东西,而且我没有使用JSON.
谢谢阅读.
有关详细信息:json_encode
例:
echo json_encode($array, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE);
Run Code Online (Sandbox Code Playgroud)
utf8_encode()在我之前使用PHP json_encode()确实阻止了数据在切断之后’但它也将\0092其编码为未显示的数据(控制字符).当我SET NAMES utf8在查询之前使用MySQL 之前,我根本不需要使用utf8_encode(),并且我的json已经正确编码并且’映射到了\u2019,它显示得很好.
感谢@Pekka链接,它帮助我缩小了可能性.