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

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

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

select hex(message) from table1

C385 C293 C383 C29F C3A2 C282 C2AC
好像有东西在改变中间的绳子。有人能帮我解决这个问题吗

谢谢。

根据

需要 使用与服务器通信 Unicode应该设置客户端 相应的字符集;对于 例如,通过发出一组名称“utf8” 声明

您还应该检查和系统变量,了解MySQL是如何试图解释您的字符串的

您还可以通过运行
showtablestatusindatabase
查询来检查各个表正在使用的排序规则

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

祝你好运:-)