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

Sar*_*emp 5 php json getjson

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

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

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

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

谢谢阅读.

its*_*zad 8

有关详细信息: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)


Sar*_*emp 7

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

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