java - 从 Java 在 MySQL 中记录 utf-8 字符串时出现问题

标签 java mysql jdbc

我正在尝试记录从 Java 应用程序客户端发送到 MySQL 数据库的字符串。从客户端发送的字符串是UTF-8编码的。我已经确认了这一点,因为我已经使用wireshark等工具进行了数据包跟踪。客户端发送的字符串由 3 个字符组成,分别是拉丁语 OE (0xc593)、beta (0xc39f)、欧元符号 (0xE2 0x82 0xAC)。我正在使用 setstring 的准备语句方式将字符串记录到数据库中。该表是在支持 utf-8 字符编码的情况下创建的。现在,当我在数据库中看到记录的字符串时,我发现了这个

select hex(message) from table1

C385 C293 C383 C29F C3A2 C282 C2AC

似乎有什么东西正在改变中间的字符串。谁能帮我解决这个问题吗?

谢谢。

最佳答案

根据MySQL docs ,

Client applications that need to communicate with the server using Unicode should set the client character set accordingly; for example, by issuing a SET NAMES 'utf8' statement.

您还应该检查 character_set_clientcharacter_set_connection系统变量来了解 MySQL 如何尝试解释您的字符串。

您还可以通过运行SHOW TABLE STATUS IN database 查询来检查各个表所使用的排序规则。

希望这能让您更清楚地了解 MySQL 服务器正在尝试如何处理您从客户端发送的字符串。阅读the docs也应该具有启发性。

祝你好运:-)

关于java - 从 Java 在 MySQL 中记录 utf-8 字符串时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4520512/

相关文章:

java - LinearLayout addview() 禁用第一个 child 的 margin

java - Android:上下文菜单不显示 ListView 的成员由 LinearLayout 定义?

mysql - 在mysql中代表 "linked"联系人

mysql - 将数据行选择为月份

jdbc - 从数据 block 到雪花的连接

java - JPA - 从连接的表中检索信息

java - 在 Maven 构建阶段更新 jsp 脚本标签

php - 具有 X num 个关系属性的动态过滤器查询 - Doctrine Symfony2

java - BIGQUERY - 如何创建与 Pentaho Data Integration (Spoon) 的连接?

java - Spring Boot JDBC-Test DB Connection Leak 运行所有测试时