【问题标题】:Searching for emojis in MySQL在 MySQL 中搜索表情符号
【发布时间】:2015-04-12 08:00:01
【问题描述】:

我有一个如下所示的字符串:

现在,当我的应用将此字符串推入其 utf8 mysql 数据库列时,它在 MySQL CLI 中如下所示:

如果我选择convert(mystring using utfmb4),它仍然看起来像这样。

如果我使用select hex(mystring) from mytable; 将其转换为十六进制,它看起来像这样:

C3A2CB9CE282ACC3AFC2B8C28FC3B0C5B8C592CB86C3B0C5B8C592C5A0C3B0C5B8C592C281C3B0C5B8E280A1C2ACC3B0C5B8E280A1C2A7

现在,假设我想找到包含那个表情符号波形的字符串。好吧,波浪表情符号的十六进制是F09F8C8A。但是F09F8C8A 不在上面的十六进制中,所以像select * from mytable where hex(mystring) like '%F09F8C8A%'; 这样的东西不起作用。

有什么建议吗?

【问题讨论】:

标签: mysql utf-8 character-encoding emoji utf8mb4


【解决方案1】:

我称之为“双重编码”。您的客户声称它正在获取 latin1 字符,但告诉 MySQL 它们应该是 utf8,因此 3 字节 utf8 字符在数据库中被转换为 6 字节。

您需要修复客户端和表中的数据。 此链接讨论它:http://mysql.rjweb.org/doc.php/charcoll。 (抱歉,没有简要说明如何解决您的问题。)issuesfixes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 2014-02-28
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多