【问题标题】:MySQL collation for Portugese葡萄牙语的 MySQL 排序规则
【发布时间】:2018-05-10 11:23:08
【问题描述】:

MySQL 中是否有办法按照葡萄牙语对字符进行整理?以同样的方式有 utf8_spanish_ci 或西班牙语。或者有没有办法添加新的排序规则?

有以下字符:

ç (Gonçalves)
ã (Guimarães)
õ (Simões)
â (Tânger)
ô (Pôrto)
ê (Gouvêa)
é (Féria)
í (Vinícius)
ó (Grijó)
ú (Araújo)
á (Tomás)
ñ (Núñez)

当使用 utf8_general_ci 搜索“Gonçalves”时,也会返回“Goncalves”。我需要这些由 MySQL 单独处理。

【问题讨论】:

  • 使用latin1_danish_ci 作为排序规则。 collation-charts.org/mysql60/mysql604.latin1_danish_ci.html
  • 这会将 CcÇç 视为相同。
  • 在文档中它有不同的值。奇怪
  • 您是否尝试过更改排序规则和字符集
  • 您可以查看排序规则 here 。我同意丹麦语似乎对 那些 口音比西班牙语或西班牙语2 更符合您的要求。

标签: mysql utf-8 collation


【解决方案1】:

请检查排序规则和字符集。 这是一个接受葡萄牙语字符的示例 create 语句。

CREATE DATABASE dansih_db CHARACTER SET latin1 COLLATE latin1_danish_ci;

尝试更改数据库中的字符集和排序规则 上述字符集和排序规则的示例输出

[

【讨论】:

    【解决方案2】:

    根据http://mysql.rjweb.org/utf8mb4_collations.html,并在 MySQL 中测试,latin1_general_ci 是正确区分 OP 识别的字符的排序规则

    它还可以正确排序,例如,不会将 Ç 转换为 C。

    【讨论】:

      【解决方案3】:

      以上是用户问题的答案,但我希望警告是适当的:使用典型的葡萄牙语排序规则,这些字符在搜索时不会全部分开。*解释在 https://en.wikipedia.org/wiki/Portuguese_orthography “出于整理目的,重音字母和二合字母不计为单独的字符。”并且 Unicode 的公共语言数据存储库在 https://github.com/unicode-org/cldr/blob/main/common/collation/pt.xml 中解释了“根排序顺序对此语言有效。”所以 MySQL 的默认 Unicode-collat​​ion-algorithm 排序规则通常是可取的。

      【讨论】: