在与MySQL合作一段时间之后,我第一次尝试PostgreSQL数据库 . 我的环境是cPanel和phpPgAdmin的共享托管 . 令我困惑的一件事是数据库整理 . 我的托管的cPanel总是创建数据库, Encoding
, Collation
和 Character Type
分别设置为 UTF8
, en_US.UTF-8
和 en_US.UTF-8
. 我似乎没有办法改变它,因为数据库是通过cPanel创建的,那里没有选项,根据这个答案,这些参数只能通过使用所需设置重新创建数据库来更改 .
所以我想知道:它真的重要吗?如果排序规则设置为en_us.UTF8,那么非英语甚至非拉丁语字符串会发生什么,例如俄语或希伯来语?它们将如何分类?
Update: 我感到困惑,因为在MySQL中,我过去常常选择utf8mb4_unicode_ci整理而不关心特定语言 . 我想知道它与PostgreSQL中特定于国家语言的排序规则相比如何运作 .
1 回答
排序规则行为将取决于底层操作系统的语言环境支持 . 一般来说,我认为您应该期望对当前语言环境之外的字符进行相当可能的Unicode代码点排序 . 可能是default collatoin for the unicode collation algorithm .
我很难快速找到以不同方式进行整理的样本数据,以便对其进行测试 .
但请注意,您可以使用
COLLATE
术语按每列或每个操作声明归类,例如要么
要么
所以你不仅限于数据库的整理 .
(这实际上是正确处理各种/混合语言数据的唯一方法,因为无论如何都没有对所有数据进行正确的整理) .
编辑显示示例:
这也表明,独立于语言的校对概念完全是胡说八道,人们通常所说的“英语校对”或“按Unicode序列整理”(大多数是英语式的顺序) .