【发布时间】:2015-11-06 09:45:31
【问题描述】:
我创建了一个与数据库中的名称列表匹配的自动完成功能。
我正在使用的数据库包含大量带有特殊字符的名称,但最终用户很可能会使用这些名称的英文等价物进行搜索,例如Bela Bartok 对应Béla Bartók 和Dvorak 对应Dvořák 等。目前,进行英文搜索没有返回结果。
我遇到过线程说解决这个问题的方法是将您的 MySQL 排序规则更改为 utf8(我没有这样做)。
我认为这可能是因为我使用了utf8_unicode_ci,但是会得到我想要的结果的那个是utf8_general_ci。后者的问题是所有的 cmets 都说不再使用它。
有谁知道我该如何解决这个问题?
【问题讨论】:
-
不同的字符保持不同的字符。没有“特殊字符”之类的东西。他们应该有什么特别之处?是不是有些人不太了解他们?
-
@arkascha 如果它们不是世界上大多数人使用的 ASCII 码,那么有些人可能会争辩说它是一个“特殊字符”。例如。在世界杯期间,每个人最喜欢的德国人厄齐尔的名字都被 BBC 拼成了厄齐尔,因为这是音译
-
@arkascha 当你谷歌搜索 ozil 时你会得到 Özil
-
确实如此,但这并不意味着字符完全相同。它也没有解释变音符号“Ö”的“特殊”之处。解决方案确实是使用合适的排序规则,因为排序规则定义了字符到其他字符的“映射”。它不以相同的方式制作或处理字符。那会产生非常有趣的效果。
标签: mysql special-characters collation