首页 > 解决方案 > 为什么我们在 jdbc url 中使用 useUnicode=true&characterEncoding=UTF-8 即使我们的表字符集是 utf-8

问题描述

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

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

这是我的表属性->

ENGINE=InnoDB 
DEFAULT CHARSET=utf8
TABLE COLLATION=utf8_general_ci

标签: mysqljdbccharacter-encodingjdbctemplate

解决方案


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

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


推荐阅读