php - utf8_unicode_ci 似乎不是UTF8

标签 php mysql sql json

我的 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/

相关文章:

mysql - 根据下拉列表中选择的名称获取项目的代码

mysql - 为总和(工作时间)< x 的用户选择最大日期

SQL 按 3 列分组,具有特殊功能

sql - Postgres 删除表语法错误

php - 使用 swift ( php, json, swift ) 将图像上传到服务器

php - 引用 - 这个错误在 PHP 中意味着什么?

php - SwaggerUI 传递参数

mysql - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : Unknown column in 'field list' using Criteria and mapping annotation

php - 为什么我不想将 Adob​​e Dreamweaver 用作简单的代码编辑器?

mysql - 如何获取用户聊天信息