Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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 utf8\u unicode\u ci似乎不是utf8_Php_Mysql_Sql_Json - Fatal编程技术网

Php utf8\u unicode\u ci似乎不是utf8

Php utf8\u unicode\u ci似乎不是utf8,php,mysql,sql,json,Php,Mysql,Sql,Json,我的mySql数据库有点奇怪。。。 我的表是用utf8\uUnicode\uCI编码的,但当我对其进行选择时,数据似乎不是utf8,因为json\uEncode给出了一个空字符串 我必须重新浏览结果,以UTF8重新编码数据 $q = $this->db->prepare("SELECT ..."); $q->execute(); $data = $q->fetchAll(); foreach ($data as $key =>

我的mySql数据库有点奇怪。。。 我的表是用utf8\uUnicode\uCI编码的,但当我对其进行选择时,数据似乎不是utf8,因为json\uEncode给出了一个空字符串

我必须重新浏览结果,以UTF8重新编码数据

    $q = $this->db->prepare("SELECT ...");

    $q->execute();

    $data = $q->fetchAll();

    foreach ($data as $key => $value) {
        $data[$key] = utf8_encode($value);
    }

    return $data;
之后,json_编码完成他的工作。但是我不明白为什么我的表编码为utf8\U unicode\U ci的SELECT结果没有直接提取utf8中的数据。。。重新浏览阵列是非常多余的


感谢您的帮助

仅用UTF-8编码Mysql表是不够的。这只能确保数据存储在UTF-8中。当它被传递到外部源时,甚至传递的管道也必须进行UTF-8编码。您还需要设置

它的工作原理是这样的:

$mysqli = new mysqli("server", "user", "password", "test");
$mysqli->set_charset("utf8");

还可以查看SET NAMES utf8

的确,谢谢@raidenace。我必须将[PDO::MYSQL\u ATTR\u INIT\u COMMAND=>SET NAMES utf8]添加到PDO连接中。