特殊字符的 Windows 资源管理器排序顺序?

lag*_*lex 13 windows sorting filenames

Windows 资源管理器中使用的排序顺序是什么?

我特别想知道在字母之后排序的特殊字符是什么?

据我所知(测试),所有特殊字符似乎都排在字母之前。但我无法确定订单。(例如,'@' 出现在 '%' 之后,这不是键盘上的那样)

截屏

是否有任何特殊字符会在字母之后排序?

u8i*_*8it 13

我做了一些测试,整体排序似乎如下...

符号
拉丁语(按 Unicode 值 (U+xxxx)
排序)希腊语(按 Unicode 值 (U+xxxx)
排序)西里尔文(按 Unicode 值 (U+xxxx)
排序)希伯来语(按 Unicode 值 (U+xxxx) 排序)
阿拉伯语(按 Unicode 值 (U+xxxx) 排序)

数字
拉丁语(按 Unicode 值 (U+xxxx)
排序)希腊语(按 Unicode 值 (U+xxxx)
排序)西里尔文(按 Unicode 值 (U+xxxx)
排序)希伯来语(按 Unicode 值 (U+xxxx) 排序)
阿拉伯语(按 Unicode 值 (U+xxxx) 排序)

字母
拉丁语(按 Unicode 值 (U+xxxx)
排序)希腊语(按 Unicode 值 (U+xxxx)
排序)西里尔字母(按 Unicode 值 (U+xxxx)
排序)希伯来语(按 Unicode 值 (U+xxxx) 排序)
阿拉伯语(按 Unicode 值 (U+xxxx) 排序)

在此处输入图片说明


排序规则序列与观察顺序

值得注意的是,实际上有两种看待这个的方式。最终,您拥有的是按特定顺序应用的排序规则,反过来,这会产生一个观察到的顺序。旧规则的排序嵌套在新规则的排序之下。这意味着应用的第一个规则是观察到的最后一个规则,而应用的最后一个规则是观察到的第一个或最上面的规则。

排序规则序列

1.) 按 Unicode 值 (U+xxxx)
排序 2.) 按文化/语言
排序 3.) 按类型(符号、数字、字母)排序

观察顺序

  • 最高级别的分组按类型按以下顺序...

    1.) 符号
    2.) 数字
    3.) 字母

    因此,任何语言的任何符号都出现在任何语言的任何数字之前,而任何语言的任何字母都出现在所有符号和数字之后。

  • 分组的第二级是按文化/语言。以下顺序似乎适用于此:

    拉丁语
    希腊语
    西里尔语
    希伯来语
    阿拉伯语

  • 观察到的最低规则是 Unicode 顺序,因此类型语言组中的项目按 Unicode 值 (U+xxxx) 排序。

  • 您的答案并不完全完整。拉丁字母的默认排序顺序基于基本字母 A–Z、Þ,因此为什么 ỹ (U+1EF9) 排在 Z (U+005A) 之前,因为 ỹ 被排序为 Y。然后像 Æ 这样的字母是排序就像写着“AE”一样。最后,某个语言环境可能会重新排序这些字母,例如奥地利德语将 Ä 作为字母放在 A 和 B 之间,瑞典语将 Ä 放在 Z 之后(在 Å 和 Ö 之间)。根据Unicode的root.xml,西里尔文Ѓ按Ђ排序,汉字按unihan排序。 (3认同)

JCB*_*JCB 6

本次讨论中提供的答案虽然有趣,但有些大脑和深奥。

对原始海报问题的简单回答是:没有任何符号排在字母之后。

上述答案说明符号字符按 Unicode 值排序。但是,对于基本拉丁语块中的 Windows 10 文件资源管理器字符(又名 ASCII 字符),严格来说并非如此。出于对 Windows 10 文件资源管理器允许在文件名中的基本拉丁符号字符的排序顺序感兴趣,我在一个空文件夹中创建了一组文件,每个文件都有一个允许的基本拉丁符号字符作为文件名。

以下文件名中允许的 ASCII 字符表(显示字符、它们的 Unicode 值和字符描述)按 Windows 10 文件资源管理器使用的排序顺序排列。

文件名中允许的字符(按文件资源管理器整理顺序排序)

           统一码
字符十六进制值说明
--------- ------------ ----------------------------- -----------
!0021 感叹号
#0023 数字符号
$ 0024 美元符号
% 0025 百分号
& 0026 & 符号
( 0028 左括号
) 0029 右括号
, 002C 逗号
. 002E句号,句号
' 0027 撇号
- 002D 连字符,减号
; 003B 分号
@ 0040 广告牌
[ 005B 左方括号
] 005D 右方括号
^ 005E 抑扬音符
_ 005F 低线,下划线
` 0060 重口音
{ 007B 左大括号
} 007D 右大括号
~ 007E 波浪号
+ 002B 加号
= 003D 等号
0-9 0030 – 0039 数字零到数字九
Az 0041 – 005A,大写字母 A 到 Z
           0061 – 007A 到 z 的小写字母
注意:文件资源管理器不区分文件名中的大小写字母,即“A”和“a”被认为是同一个字符。

仔细检查上表将发现撇号、加号和等号的顺序与文件资源管理器排序严格按 Unicode 值不同。如果它们严格按 Unicode 值排序,撇号将跟在与号后面,加号跟在右括号之后,等号跟在分号之后。

其他 Unicode 代码集中的符号可能同样不会按 Unicode 值顺序排序,我没有验证其他代码集中的符号。


Der*_*ler -4

它们可能按照ASCII 表中的相应值进行排序。

实际的排序算法可能更复杂,并且还考虑任何其他Unicode字符。但是示例中显示的字符出现在 ASCII 表中,并且它们的值(至少是顺序)也映射到 Unicode。

  • 您能指定的不仅仅是“可能”吗?我认为“可能”的答案应该是评论,不是吗? (4认同)