我的用户表中包含整理为utf8_general_ci 。拥有姓名,年龄,电话和电子邮件等字段。
似乎某些名称字段的行有一些尾随空格。如果回声echo "selectedUser " . $selectedUser->name
;它用空格打印这个名字,我只是从DB字段复制名称并将其粘贴到php文件上,然后回显那个文本,就像打印一样
选择用户“Rohan Harish Reddy \ u00a0 \ u00a0”
名称字段仅包含字段上的尾随空格,我不确定
为什么这样打印?为什么它不适用于json_encode? 如何使用json_encode转换此用户对象?
代码:
$users = $stmt->fetchAll(PDO::FETCH_OBJ);
foreach ($users as $user) {
$selectedUser = $user;
echo "selectedUser " . json_encode($selectedUser);
}
如果在fetch all语句上面添加以下代码,它工作正常。
$this-> adminConn ->query("SET NAMES utf8");
$stmt = $this-> adminConn ->query($sql);
我是否需要为每个查询设置“SET NAMES utf8”?有共同点吗? 实现它的方法?
答案 0 :(得分:1)
因为您没有空格(Unicode 0x0020),所以您有不间断的空格(Unicode 0x00A0)。 JSON标准(RFC 7159)声明所有Unicode字符都可以被转义,并且json_encode
正在使用它来逃避不间断的空格(以便将它们与普通空格区分开来,我会假设) 。解决方案可能是要弄清楚为什么你的数据中有不间断的空格。