Windows 按字母顺序文件排序:为什么空格有特殊处理?

Windows 按字母顺序文件排序:为什么空格有特殊处理?

我注意到,在 Windows 中,按字母顺序对文件进行排序时,如果文件名之间以空格分隔,就会发生奇怪的事情。例如,假设有两个文件,“Outline.pdf”和“Outline Revised.pdf”。由于后者的名称比前者长,所以你会认为它会排在后面。但是,当我按升序排序时,我得到的结果如下:

按字母顺序排列.pdf

大纲修订版.pdf

大纲.pdf

大纲_修订版.pdf

大纲-修订版.pdf

排序

我添加了额外的文件来更详细地说明发生了什么。当“Outline”和“Revised”之间有空格时,文件会排在“Outline.pdf”之前;但是,当此空格切换为下划线或连字符时,这种情况不再发生。

我的问题是:为什么 Windows 在排序时会这样处理空格?即,为什么空格比名称末尾的优先级更高?

不那么重要的是,有办法改变这种状况吗?

编辑:添加文件扩展名以获取更多上下文。

编辑 2:添加了更多文件以获得更清晰的示例

答案1

操作系统实际上只能使用两种基本方法之一,ASCII 排序或者自然排序

ASCII 给出的是

在此处输入图片描述
图片来源-http://support.ecisolutions.com/doc-ddms/help/reportsmenu/ascii_sort_order_chart.htm

它获取每个单个元素并应用排序规则,而不进行任何其他解释。

自然排序尝试以更合乎逻辑的顺序处理数字序列 - 因此是 9、10、11 而不是 10、11、9。
它还可以处理更多“库风格”排序,将各种空格字符视为平等。

Windows 排序似乎使用 ASCII,其中空格在下划线之前,因此先排序。

你也可以问,“为什么 Windows 会将文件夹排在最上面,而文件排在最下面,而理性思维会自然排序?” - 有人选择这种方式,没有其他原因。其他操作系统确实会自然排序……这会导致诸如 UUID 之类的问题,而 UUID 应该按 ASCII 排序。没有完美的解决方案。

我没有说明示例文件将具有不可见的“点三”扩展名。.
[点] 将按空格、ASCII 进行排序。
这是在问题被编辑以明确显示.3之前

从经验上看,Mac 和 Win10 现在似乎都做了某种自然排序——我确信 Windows 以前没有这样做,而且我也不怎么用 Win,所以不得不看一看。
这是它们各自对相同文件进行排序的方式……

在此处输入图片描述

他们似乎都同意下划线位于破折号之前,这与严格的 ASCII 排序相矛盾,但对于如何处理句点意见不一。

相关内容