繁体   English   中英

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

[英]Problem logging utf-8 strings in MySQL from Java

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

select hex(message) from table1

C385 C293 C383 C29F C3A2 C282 C2AC

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

谢谢。

根据MySQL文档

需要使用Unicode与服务器通信的客户端应用程序应相应地设置客户端字符集。 例如,通过发出SET NAMES'utf8'语句。

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

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

希望这将使您更清楚地了解MySQL服务器正在尝试处理从客户端发送的字符串。 文档中阅读也应该很有启发性。

祝好运 :-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM