【问题标题】:MySql returns wrong results for emoji stringsMySql 为表情符号字符串返回错误的结果
【发布时间】:2015-08-19 21:20:29
【问题描述】:

我的数据库、表、字段都使用utf8mb4。我可以很好地将表情符号存储到某些字段中。现在我尝试查询如下:

SELECT * FROM user WHERE name='????????????????'

太棒了,结果是字段名称不同的记录,例如'????????????????'

看起来 mysql 匹配表情符号字符串的长度而不是内容。

有解决这个问题的办法吗?非常感谢。

【问题讨论】:

  • 这可能对你有帮助:stackoverflow.com/questions/7814293/…
  • 感谢 Stuart 的快速回复。我的问题完全不同。我可以很好地存储、浏览和提取所有带有表情符号的字符串。查询时匹配它们的唯一问题。
  • 同样的情况。
  • 可能与大小写算法有关(搜索“A”和“a”给出相同的行)。

标签: mysql emoji utf8mb4


【解决方案1】:

刚刚对我的桌子做了这个命令:

ALTER TABLE 表名CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

就是这样。那么结果是正确的。

【讨论】:

    【解决方案2】:

    试试这个:

    ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
    

    【讨论】:

      【解决方案3】:

      您的桌子上的整理顺序是什么?由于您使用的是 utf8mb4,它应该是 utf8mb4_unicode_ci。否则,您可能会遇到您所看到的问题 - 更糟糕的是,您甚至可能会返回多条记录。

      要设置排序规则,请使用:

      ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      

      【讨论】:

      • 我和 OP 有同样的问题,我将 collation_connectioncollation_databasecollation_server 设置为 utf8mb4_unicode_ciSELECT 查询似乎确实只匹配表情符号的数量,而不是实际内容(至少可以说这很奇怪)。
      猜你喜欢
      • 1970-01-01
      • 2017-07-31
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      • 2017-10-01
      • 1970-01-01
      • 2020-08-20
      • 1970-01-01
      相关资源
      最近更新 更多