在MySQL数据库中查找包含普通字符串的utf8字符串。
在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。
问题的原因是在MySQL数据库中,UTF-8字符串无法与普通字符串匹配。解决方法是将表和列的排序规则改为utf8_unicode_ci。如果表/字段字符集不是utf8,需要首先进行更改。可以通过运行"SHOW CREATE TABLE table_name"查询来查看实际的排序规则。
原帖中提到,问题的提问方式是错误的,并且并不是一个真正存在的问题,因为作者在收集数据时已经将其转换为对象进行比较,以减少SQL查询的数量。提问者建议删除这个问题。
另外,原帖中还提到最好使用数据库来处理这个问题,因为数据库本身就是为此而设计的。即使在实时输入搜索建议的情况下,也应该使用数据库来实现。
问题的原因是MySQL数据库中UTF-8字符串无法与普通字符串匹配,解决方法是修改表和列的排序规则为utf8_unicode_ci。同时,建议使用数据库来处理此类问题。