首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >设置数据库uft8mb4后,黑色菱形和问号仍然存在

设置数据库uft8mb4后,黑色菱形和问号仍然存在
EN

Stack Overflow用户
提问于 2018-09-30 06:28:38
回答 2查看 1K关注 0票数 3

关于MySQL数据库和Java JDBC连接编码。数据库已转换为utf8mb4和utf8mb4_unicode_ci,如下所示:这是来自JDBC连接的SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';的结果。

代码语言:javascript
复制
+--------------------------+--------------------+
|      Variable_name       |       Value        |
+--------------------------+--------------------+
| character_set_client     | utf8mb4            |
| character_set_connection | utf8mb4            |
| character_set_database   | utf8mb4            |
| character_set_filesystem | binary             |
| character_set_results    | utf8mb4            |
| character_set_server     | utf8mb4            |
| character_set_system     | utf8               |
| collation_connection     | utf8mb4_unicode_ci |
| collation_database       | utf8mb4_unicode_ci |
| collation_server         | utf8mb4_unicode_ci |
+--------------------------+--------------------+

从Unicode和直接连接到DB的终端中,我可以看到MySQL字符í及其正确的十六进制值c3 ad

代码语言:javascript
复制
+------------------------------+
| HEX(location.name)           |
+------------------------------+
| C3AD                         |
+------------------------------+

JDBC连接设置:useUnicode=true&characterEncoding=UTF-8

通过以下配置使用HikariCP

config.addDataSourceProperty("useUnicode", "true"); config.addDataSourceProperty("characterEncoding", "utf-8"); config.setConnectionInitSql("SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci");

使用mysql-connector-java:8.0.11

在Postman中,从使用JDBC连接查询相关表的结果中,í字符被作为返回。并且在Postman中作为?返回。

根据stackoverflow.com/questions/38363566的说法,这让我相信我在阅读过程中的连接不是UTF-8,我如何检测到这一点?

如果需要,数据库和应用程序已重置为应用设置。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52573061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档