【问题标题】:Find utf8 string with normal string in MySQL database在 MySQL 数据库中查找具有普通字符串的 utf8 字符串
【发布时间】: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。

【问题讨论】:

    标签: php sql utf-8 mysqli


    【解决方案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。所以我问的问题是错误的,根本不是问题。 -- 这个问题可以删除,因为它不是一个存在的问题。
    • 为此最好使用数据库。使用数据库没有任何问题。它是为它设计的
    • 即使在输入建议框时请求是即时的,它也必须出现?
    猜你喜欢
    • 1970-01-01
    • 2015-06-26
    • 2021-12-17
    • 2015-02-15
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    相关资源
    最近更新 更多