PHP json_编码不起作用
我有一个用户表,其排序规则为utf8\u general\u ci。具有姓名、年龄、电话和电子邮件等字段 “名称”字段的某些行似乎有一些尾随空格。如果echo edPHP json_编码不起作用,php,json,Php,Json,我有一个用户表,其排序规则为utf8\u general\u ci。具有姓名、年龄、电话和电子邮件等字段 “名称”字段的某些行似乎有一些尾随空格。如果echo edecho“selectedUser”$选择用户->名称;它用空格打印这个名字,我只是从DB字段复制了这个名字,粘贴到一个php文件上,然后回显这个文本,就像打印一样 选择用户“Rohan Harish Reddy\u00a0\u00a0” “名称”字段仅包含字段上的尾随空格,我不确定 为什么印成这样?为什么它不适用于json_编码?
echo“selectedUser”$选择用户->名称
;它用空格打印这个名字,我只是从DB字段复制了这个名字,粘贴到一个php文件上,然后回显这个文本,就像打印一样
选择用户“Rohan Harish Reddy\u00a0\u00a0”
“名称”字段仅包含字段上的尾随空格,我不确定
为什么印成这样?为什么它不适用于json_编码?
如何使用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”?有共同点吗
如何实现它
因为您没有空格(Unicode 0x0020),所以您有非中断空格(Unicode 0x00A0)。JSON standard()声明所有Unicode字符都可以转义,而
JSON_encode
正使用它来转义不间断的空格(我假设是为了让人类读者将其与普通空格区分开来)。解决方案可能是找出为什么数据中有尾随的不间断空格。当我们上载csv文件时,它正在发生。插入Unicode 0x00A0。在解析上传的文件并在json_encode上避免它时,有没有办法避免它?我不知道你的CSV是什么样子,或者你是如何解析它的,或者你是如何清理(或不清理)你的值的。避免在json\u encode
上使用它很简单,只需在json\u encode
之前使用preg\u replace
将所有NBSP替换为规则空格,或者直接删除它们。如果名称有任何不间断空格,则该特定对象不会使用json\u encode($selectedUser)打印由于这个非中断空格。我不想替换那个非中断空格,需要返回DB字段上可用的任何内容。如果在fetch all语句上方添加下面的代码,则工作正常$此->adminConn->查询(“设置名称utf8”)$stmt=$this->admincon->query($sql);我是否需要为每个查询设置“set NAMES utf8”?是否有一种通用的方法来实现它?如果您需要数据库中确切内容的JSON表示,那么您就有了正确的值-“Rohan Harish Reddy\u00a0\u00a0”
是具有两个尾随NBSP的字符串的有效JSON。我想我不明白你的问题。(您还可以通读一遍,了解为什么设置名称utf8
通常不是一个好主意。)