Mysql - "utf8_unicode_ci" 和 "utf8_persian_ci" 有什么区别?



在MySQL数据库中,我将波斯语语句保存为表中的Unicode(utf8_unicode_ci)。然后我更改排序为utf8_persian_ci,但结果是相同的。

(我不能以权威人士的身份具体谈论波斯语的排序。)MySQL排序规则的基本思想是

  • _bin—只检查位;
  • _general_ci—大小写和重音不敏感,当涉及到所有其他"规则"时相当蹩脚。
  • _unicode_ci, _unicode_520_ci, _0900_ai_ci——不区分大小写和重音;基于unicode标准4.0.0,5.2.0,9.0.0;但不太可能是"正确的"。适用于任何特定语言(西班牙语、波斯语、德语等)
  • _persian_ci (etc)——类似于Unicode排序规则之一,但针对该语言进行了优化。

特定排序可能不同的示例:

  • _spanish_ci - one treat "ch"作为两个字母,与大多数排序
  • 一样
  • _spanish2_ci - treat "ch"作为一个字母:'cz' <' ch ' & lt;"哒"。(以及其他差异)
  • _立陶宛- "ch"与"c";即'cha' = 'ca'。

我假设在波斯语字符中_persian_ci和_unicode_ci之间可能存在差异。浏览http://mysql.rjweb.org/utf8_collations.html和http://mysql.rjweb.org/utf8mb4_collations.html似乎可以看出,西欧字符在这些排序法中是相同的。

  1. utf8_persian_ci存储波斯语文本的性能更好&字符。
  2. 在utf8_persian_ci中对波斯语文本排序时,字母"پ","گ","ژ","چ"在正确的位置(顺序),但在utf8_unicode_ci中,它们变成了"ی"之后。

最新更新