3

按字母顺序排序不是我们花太多时间担心的事情。我们在很小的时候就学会了字母表,现在我们知道它(拉丁语)以 A 开头,然后是 B,然后是 C 等等。一直到 Z。

但是这个订单究竟存储在计算机系统的什么地方呢?高级编程语言具有用于按字母顺序排列集合的各种本机函数,但我假设它们又依赖于低级引用来实现这一点?

除了基本的排序之外,还必须有一种方法来存储E, e, È,and之间的Ê所有特征。DF

我相当熟悉 ASCII、Unicode 等,但扩展字符集没有严格按字母顺序排列,所以我假设“顺序”存储在其他地方。

我也熟悉数据库中排序规则的概念,但我再次假设这依赖于一些较低级别的实现?

简而言之:

如果我想改变“字母”的顺序,我会改变什么?

这个订单(我们都直观地知道)最终存储在哪里?

4

1 回答 1

0

有两种对字母数据进行排序的函数:朴素的非本地化函数,期望所有文本都是 ASCII 并按 ASCII 代码顺序有效排序,忽略其他字符或以某种奇怪的方式处理它们,以及应用特定于语言环境的整理的本地化函数命令。这通常不是操作系统问题,尽管例如系统中文件名的排序需要基于某种整理顺序。

在现代世界中,计算机软件应该应用通用区域设置数据存储库 ( CLDR ) 作为排序的基础,并可能通过特定于区域设置的规则来增强。CLDR 模型基于层或“增量”:有一个整体的默认顺序,一个修改它的泛欧顺序,以及修改它的特定于区域设置的顺序。例如,在德语排序中,“Ä”被视为主要等同于“A”;在许多其他语言中,如芬兰语、瑞典语和爱沙尼亚语,它被视为放在“Z”之后的单独字母。

于 2013-05-22T20:13:56.790 回答