【问题标题】:Mysql - What's the difference between "utf8_unicode_ci" and "utf8_persian_ci"?Mysql - “utf8_unicode_ci”和“utf8_persian_ci”有什么区别?
【发布时间】:2021-12-05 15:39:28
【问题描述】:

在 MySQL 数据库中,我将波斯语句子作为 Unicode(utf8_unicode_ci) 保存在一个表中。然后我将排序规则更改为 utf8_persian_ci 但结果相同。未进行任何更改。

“utf8_unicode_ci”和“utf8_persian_ci”有什么区别?

【问题讨论】:

  • Unicode 是波斯编码的超集。但是因为您的数据都是波斯语,所以从 Unicode 到波斯编码“降级”意味着您不会丢失任何信息。
  • @TimBiegeleisen - 我不认为有任何损失 - 我们不是在谈论“编码”,而是“整理”。

标签: mysql unicode difference between farsi


【解决方案1】:

(我不能以权威人士的身份专门讨论波斯排序规则。)MySQL排序规则背后的一般思想是

  • _bin -- 只检查位;这对于“单词”通常是无用的。
  • _general_ci -- 不区分大小写和重音,在涉及所有其他“规则”时相当蹩脚。
  • _unicode_ci、_unicode_520_ci、_0900_ai_ci -- 不区分大小写和重音;基于 Uniocde 标准 4.0.0、5.2.0、9.0.0;但不太可能对任何特定语言(西班牙语、波斯语、德语等)“正确”
  • _persian_ci (etc) -- 类似于 Unicode 排序规则之一,但针对语言进行了调整。

具体排序规则可能不同的示例:

  • _spanish_ci -- 与大多数排序规则一样,将“ch”视为两个字母
  • _spanish2_ci -- 将“ch”视为单个字母:'cz'
  • _lithuanian_ci -- "ch" 与 "c" 相同;即'cha' = 'ca'。

我认为波斯语字符中的 _persian_ci 和 _unicode_ci 之间可能存在差异。看一眼http://mysql.rjweb.org/utf8_collations.htmlhttp://mysql.rjweb.org/utf8mb4_collations.html 似乎表明西欧字符在这些排序规则中的排序方式相同。

【讨论】:

    猜你喜欢
    • 2011-03-21
    • 2013-09-25
    • 1970-01-01
    • 2010-11-05
    相关资源
    最近更新 更多