gpt4 book ai didi

icu - unicode 归类排序背后的理论是什么

转载 作者:行者123 更新时间:2023-12-04 12:52:17 28 4
gpt4 key购买 nike

unicode 排序背后的理论是什么?我明白它是如何工作的,但我不明白为什么 they决定采用此标准进行归类排序。

似乎当您有两个字符串要比较时,例如使用 ucol_strcolliter():

ucol_strcollIter(collator, &stringIter1, &stringIter2, &Status)

然后,假设这两个字符串是:

string string1 = "hello"
string string2 = "héllo"

在“Secondary”排序强度下,string1 应该排在 string2 之前。比较 string1 和 string2 的次要强度。

<1 hello
<2 héllo

但是

如果你有尾随空格,例如:

string string1 = "hello  "
string string2 = "héllo "

然后带重音的 hello (string2) 将放在 string1 之前。并且,两者都是根据它们的主要重量进行比较的。

<1 héllo  
<1 hello

为什么 unicode 归类算法会考虑尾随空格?

这背后有什么原因吗?

最佳答案

这是一个老问题,但我会在以后为其他人回答。

最初的“他们”是国际标准化组织,该组织发布了 ISO-14651,这是一种以支持 Unicode 为目标的任何编码方案的文本整理标准。该标准在很大程度上独立于实现。

然后 Unicode 联盟发布了 Unicode 归类算法,它与 ISO-14651 兼容,但在实现细节方面走得更远。

排序规则取决于语言排序规则,排序规则类通常将语言环境作为参数。如前所述,默认排序顺序在 DUCET 中定义。如果您使用 ICU4J 库,它将与 DUCET 同步。

比较算法基于至少 3 个级别以符合 ISO-14651。级别定义如下。

  1. 基本字符(例如 a、b、c、d)
  2. 口音
  3. 案例/变体
  4. 标点符号
  5. 相同

大多数字符在比较之前都被归一化了。因此,重音符号 'á' 将被标准化为 'a' 以进行 1 级比较。 Level-2 用作决胜局。

默认规则是有原因的,但可以针对个别用例进行定制。请注意,语言排序不同,排序顺序通常与字符在 Unicode 中出现的顺序不匹配。语言排序顺序不等于二进制排序顺序。

引用Unicode Collation Algorithm以获得非常详细的解释。

关于icu - unicode 归类排序背后的理论是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27301871/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com