我注意到,在 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 排序相矛盾,但对于如何处理句点意见不一。