MySql:返回“的排序规则/字符集”;Mü;“nchen”;至于;Munchen“;同时";G和xF6;teborg“;至于;G和xF8;teborg“;

MySql:返回“的排序规则/字符集”;Mü;“nchen”;至于;Munchen“;同时";G和xF6;teborg“;至于;G和xF8;teborg“;,mysql,character-encoding,collation,Mysql,Character Encoding,Collation,我有一个网站,挪威用户应该能够搜索城市名称。 慕尼黑市被保存为“慕尼黑”。 哥德堡市被储存为“哥德堡” 使用挪威键盘的用户在搜索“Munchen”时会键入“Munchen”。 这是因为挪威人不经常使用u,他们会键入键盘上最接近的字母u 他们在搜索“哥德堡”时会键入“哥德堡”。这是同一个字母,但在挪威语和瑞典语中看起来不同。 这也适用于带有ä而不是æ的城市 排序测试 ut8\u常规\u ci Munchen会给Munchen的。 哥德堡不会给哥德堡 拉丁语和瑞典语 Munchen不会给Munche

我有一个网站,挪威用户应该能够搜索城市名称。 慕尼黑市被保存为“慕尼黑”。 哥德堡市被储存为“哥德堡”

  • 使用挪威键盘的用户在搜索“Munchen”时会键入“Munchen”。 这是因为挪威人不经常使用u,他们会键入键盘上最接近的字母u

  • 他们在搜索“哥德堡”时会键入“哥德堡”。这是同一个字母,但在挪威语和瑞典语中看起来不同。 这也适用于带有ä而不是æ的城市

  • 排序测试

    ut8\u常规\u ci Munchen会给Munchen的。 哥德堡不会给哥德堡

    拉丁语和瑞典语 Munchen不会给Munchen。 哥德堡将给哥德堡

    是否有一种方法/排序规则可以支持这两种场景

    我使用mysql 5.6.12

    在搜索目的地时,可以在中找到首选行为。

    首先,签出,您可以查看每个排序规则中哪些字符等于哪些字符。在一条直线上的那些是相等的。如果您找到一个排序规则,其中存在所描述的匹配项,那么您就成功了。我会去看看各种各样的斯堪的纳维亚的或者

    或者,您可以创建自己的排序规则,以使用所需的权重进行排序。显然,您可以基于现有的排序规则。

    更紧凑

    在许多(但不是全部)utf8排序规则中,
    Ø
    被视为
    O
    p
    之间的字母。utf8冰岛语和utf8土耳其语中的
    。utf8_german2_ci将其视为等同于
    oe
    œ
    。其他人把它等同于
    o

    排序规则的问题在于没有一种排序规则适用于所有语言。utf8_unicode_ci和utf8_unicode_520_ci可能是最好的折衷方案。即便如此,这两种方法在处理
    Ø
    时也有所不同

    ä=æ
    仅适用于utf8_german2_ci。斯洛伐克将
    ä
    视为一个单独的字母;其余的说
    ä=a

    如果你想要西欧以外的名字,就不应该使用拉丁文1

    没有排序规则将处理哥德堡
    =
    哥德堡
    。所以,你真正需要的是一张交替拼写的表格。有了这张桌子,你可以和挪威人等(更糟糕的是,还有美国人)一起解决这个问题