在MySQL数据库中查找包含普通字符串的utf8字符串。

9 浏览
0 Comments

在MySQL数据库中查找包含普通字符串的utf8字符串。

我在我的MySQL(服务器版本:5.6.14和服务器字符集:UTF-8 Unicode (utf8))数据库中有一个表格,其中包含一些用荷兰语写的名称,如下所示:

  • Afrika
  • Antarctica
  • Azië
  • Europa
  • Noord-Amerika
  • Oceanië
  • Zuid-Amerika
  • Angola
  • Argentinië
  • Aruba
  • Australië
  • België
  • Brazilië
  • Burma

我使用PHP编写了一个搜索方法,它根据用户输入尝试在数据库中查找名称。当用户搜索'Azie'时,它应该找到'Azië'。

是否有PHP或MySQL函数可以解决这个问题?

因为搜索方法在除了这个位置表之外的更多表中进行搜索,我不想使用额外的表格或列来存储替代标记。这将使它变得更加复杂。

我使用$mysqli->set_charset("utf8")设置了mysqli字符集,HTML文档也是utf8。

0
0 Comments

问题的原因是在MySQL数据库中,UTF-8字符串无法与普通字符串匹配。解决方法是将表和列的排序规则改为utf8_unicode_ci。如果表/字段字符集不是utf8,需要首先进行更改。可以通过运行"SHOW CREATE TABLE table_name"查询来查看实际的排序规则。

原帖中提到,问题的提问方式是错误的,并且并不是一个真正存在的问题,因为作者在收集数据时已经将其转换为对象进行比较,以减少SQL查询的数量。提问者建议删除这个问题。

另外,原帖中还提到最好使用数据库来处理这个问题,因为数据库本身就是为此而设计的。即使在实时输入搜索建议的情况下,也应该使用数据库来实现。

问题的原因是MySQL数据库中UTF-8字符串无法与普通字符串匹配,解决方法是修改表和列的排序规则为utf8_unicode_ci。同时,建议使用数据库来处理此类问题。

0