Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP json_编码不起作用_Php_Json - Fatal编程技术网

PHP json_编码不起作用

PHP json_编码不起作用,php,json,Php,Json,我有一个用户表,其排序规则为utf8\u general\u ci。具有姓名、年龄、电话和电子邮件等字段 “名称”字段的某些行似乎有一些尾随空格。如果echo edecho“selectedUser”$选择用户->名称;它用空格打印这个名字,我只是从DB字段复制了这个名字,粘贴到一个php文件上,然后回显这个文本,就像打印一样 选择用户“Rohan Harish Reddy\u00a0\u00a0” “名称”字段仅包含字段上的尾随空格,我不确定 为什么印成这样?为什么它不适用于json_编码?

我有一个用户表,其排序规则为utf8\u general\u ci。具有姓名、年龄、电话和电子邮件等字段

“名称”字段的某些行似乎有一些尾随空格。如果echo ed
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
通常不是一个好主意。)