为什么我们在 jdbc url 中使用 useUnicode=true&characterEncoding=UTF-8 即使我们的 table 字符集是 utf-8

Why do we use useUnicode=true&characterEncoding=UTF-8 in jdbc url even if our table character set in utf-8

所以我的 mysql 数据库中的字符集是 utf-8。 另外,如果我不在 jdbc URL 中使用 useUnicode=true&characterEncoding=UTF-8,那么一些字符会变成 ?。

我想知道当我们的数据库中的字符集是 utf-8 时,为什么要在 jdbc URL 中使用 Unicode=true&characterEncoding=UTF-8。

这是我的 table 属性 ->

ENGINE=InnoDB 
DEFAULT CHARSET=utf8
TABLE COLLATION=utf8_general_ci

MySQL 具有列字符集(每个 table 和每个数据库都有默认值)。它也有连接字符集,它们不是一回事。您的 SQL 语句是用什么字符集写的?结果以什么字符集返回?这就是您选择连接字符集的原因。细节比我的总结更复杂。读这个。 https://dev.mysql.com/doc/refman/8.0/en/charset-connection.html

服务器对此有默认设置。但最好在您的客户端程序中设置它;如果您迁移到具有错误默认值的生产服务器,您的程序仍然可以工作。