我有一个网站,挪威用户应该可以搜索城市名称。 慕尼黑市被储存为“慕尼黑”。 哥德堡市被储存为“哥德堡”。
使用挪威语键盘的用户在搜索“München”时会输入“Munchen”。 这是因为挪威人不经常使用ü而且会键入u,这是键盘上最接近的字母。
在搜索“哥德堡”时,他们会输入“Gøteborg”。这是相同的字母,但在挪威语和瑞典语中看起来不同。 这也适用于ä而不是æ的城市。
整理测试
ut8_general_ci 慕尼黑将给慕尼黑。 Gøteborg不会给Göteborg
latin1_swedish_ci 慕尼黑不会给慕尼黑。 Gøteborg将为Göteborg提供服务。
是否有支持这两种情况的方法/整理?
我使用mysql 5.6.12
搜索目的地时,可以在hotels.com找到首选行为。
答案 0 :(得分:0)
首先,查看collation charts webdsite,您可以在其中查看每个字符等于哪个字段。一行中的人彼此相等。如果您找到了所描述的匹配项的排序规则,那么您就会受到影响。我会看看各种斯堪的纳维亚人,或german ones.。
或者,您可以使用所需的权重创建自己的归类到mysql。显然,您可以根据现有的排序规则进行排序。
答案 1 :(得分:0)
在许多(但不是全部)utf8排序规则中,Ø
被视为O
和P
之间的字母。在utf8_icelandic_ci和utf8_turkish_ci中同样为ö
。 utf8_german2_ci将其视为等于oe
和œ
。其他人认为它等于o
。
归类的问题在于没有一种归类适用于所有语言。 utf8_unicode_ci和utf8_unicode_520_ci可能是最好的妥协。即便如此,这两者在处理Ø
时也有所不同。
ä=æ
仅适用于utf8_german2_ci。斯洛伐克将ä
视为单独的一封信;其余的人说ä=a
。
如果你想要西欧以外的名字,你不应该使用latin1。
没有归类会处理Gothenburg
= Göteborg
。所以,你真正需要的是一张备用拼写表。使用该表,您可以解决挪威人等问题(更糟糕的是,美国人。)