我的mySql数据库出了点奇怪... 我的表格编码为" utf8_unicode_ci",但是当我对它进行SELECT时,数据似乎不是UTF8,因为json_encode给出一个空字符串。
我必须重新浏览结果以重新编码UTF8中的数据...
$q = $this->db->prepare("SELECT ...");
$q->execute();
$data = $q->fetchAll();
foreach ($data as $key => $value) {
$data[$key] = utf8_encode($value);
}
return $data;
之后,json_encode完成了他的工作。但我不明白为什么我的表中的SELECT结果编码为" utf8_unicode_ci"不能直接以UTF8提取数据......重新浏览数组是非常多余的......
感谢您的帮助
答案 0 :(得分:1)
使用UTF-8编码的Mysql表是不够的。这只能确保数据存储"在UTF-8中。当它被通过"对于外部源,即使传递管道必须是UTF-8编码。您还需要设置char set for the connection link identifier。
它的工作原理如下:
$mysqli = new mysqli("server", "user", "password", "test");
$mysqli->set_charset("utf8");
同时查看SET NAMES utf8