最近,我需要在DB中的一些表(MySQL / MariaDB)中存储表情符号,因此经过一些研究后,我发现我所使用的编码(UTF8)还不够,我需要迁移到UTF8-mb4。然后,我将所需表的字符集更改为新的编码,但显然这还不够。我还更改了在创建新DbConnection时使用的连接字符串,指定了编码utf8mb4,但仍然无法保存emojy。最后,我找到了这个答案utf8mb4在MySQL中的应用,它建议使用SET NAMES指令。这解决了我的问题,但我注意到,在重新启动db服务之前,指令是活动的。我想知道:
SET NAMES指令的确切效果是什么,特别是对于使用旧utf8编码的表?发布于 2022-06-20 12:28:14
SET NAMES命令的效果在MySQL手册中指定:它将这三个系统变量设置为指定的值:它不会对使用旧utf8排序规则的表产生任何影响,因为不能将表情符号存储在这种编码中;数据丢失了。对于新表,它可能会影响服务器如何解释客户端发送的字符串文本(character_set_connection),以及如何将从表中检索的表情符号发送回客户端(character_set_results)。
SET @@character_set_connection = 'utf8mb4';这样的语句来设置它们。https://stackoverflow.com/questions/72683486
复制相似问题