我的 mySql 数据库出现了一些奇怪的情况... 我的表以“utf8_unicode_ci”进行编码,但是当我对其进行选择时,数据似乎不是 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 完成他的工作。但我不明白为什么我的表编码为“utf8_unicode_ci”的SELECT结果没有直接提取UTF8中的数据...重新浏览数组是非常多余的...
感谢帮助
最佳答案
仅用 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");
另请查看设置名称 utf8
关于php - utf8_unicode_ci 似乎不是UTF8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43472912/