mysql - 为什么我们在 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
解决方案
MySQL 具有列字符集(每个表和每个数据库都有默认值)。它也有连接字符集,它们不是一回事。您的 SQL 语句是用什么字符集编写的?以什么字符集返回结果?这就是您选择连接字符集的原因。细节比我的总结要复杂。读这个。 https://dev.mysql.com/doc/refman/8.0/en/charset-connection.html
服务器对此有默认设置。但最好在您的客户端程序中设置它;如果您迁移到默认设置错误的生产服务器,您的程序仍然可以工作。
推荐阅读
- plsql - 有人可以帮助解决这些plsql问题吗,我很难完全理解它
- c# - 尝试在服务层.Net Core中使用自动映射器时出现红色下划线错误
- swift - Swift 中奇怪的 UI 错误
- hive - 错误:org.apache.thrift.transport.TTransportException java.net.SocketException: Broken pipe (Write failed) (State=08S01,code=0)
- vue.js - 页面加载后创建 VUE 组件
- javascript - 如何样式化谷歌地图信息窗口
- spring-boot - 如何在 JPA 中调整日期时间长度?
- javascript - 如果 api 响应 Angular 中没有数据,则显示 div
- c++ - 具有奇怪行为的 C++ std::vector push_back
- google-chrome - 如何选择内存缓存和磁盘缓存