在 MySQL 数据库中查找具有普通字符串的 utf8 字符串

Posted

技术标签:

【中文标题】在 MySQL 数据库中查找具有普通字符串的 utf8 字符串【英文标题】:Find utf8 string with normal string in MySQL database 【发布时间】:2013-12-07 02:47:36 【问题描述】:

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

非洲 南极洲 阿兹耶 欧洲 北美洲 大洋洲 南美洲 安哥拉 阿根廷 阿鲁巴 澳大利亚 比利时 巴西 缅甸

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

是否有 PHP 或 MySQL 函数可以解决此问题? 因为搜索方法是在比这个位置表更多的表中搜索,所以我不想使用带有替代符号的额外表或列。这会使它变得更复杂。

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

【问题讨论】:

【参考方案1】:

您尝试过实际使用它吗? 如果是这样,并且不起作用 - 表和列上的排序规则是什么? 如果它是 utf_general_ci(这是 utf8 字符集的默认设置)并且仍然不起作用 - 尝试将其更改为 utf8_unicode_ci。在这里你可以看到它是如何完成的:How to change the default collation of a table? 如果表/字段字符集不是 utf8 - 您必须先更改它。

要查看实际排序规则,您可以运行 SHOW CREATE TABLE table_name 查询

【讨论】:

感谢您的回答。要回答您的问题,是的,我确实尝试过。我的表和列是 utf8_general_ci。当我意识到我将所有数据收集到对象中以比较搜索词以最小化 sql 查询的数量时,我正在将我的数据库、连接、表和列更改为 utf8_unicode_ci。所以我问的问题是错误的,根本不是问题。 -- 这个问题可以删除,因为它不是一个存在的问题。 为此最好使用数据库。使用数据库没有任何问题。它是为它设计的 即使在输入建议框时请求是即时的,它也必须出现?

以上是关于在 MySQL 数据库中查找具有普通字符串的 utf8 字符串的主要内容,如果未能解决你的问题,请参考以下文章

在 MySQL 中查找具有重复记录的 id

mysql中,主键与普通索引

MySQL——索引

mysql 索引2

剑指Offer-MySQL数据库

mysql 索引