windows中文件或者文件名是按照什么原则排序的?命名时有什么技巧?

比如我知道: 一般是文件夹优先于普通文件,特殊字符(标点、符号)> 数字 > 字母顺序 > 汉字拼音。 但是具体到每一项怎么排的?如特殊字符的顺序是怎么排的等。 其次,在命名的时候有什么技巧而言使得名称看起来规整美观显眼? 谢谢。
关注者
47
被浏览
15,240

4 个回答

感谢 @基宁 从百度知道上找到的材料,但或许是微软更改了排序规则,该答案还是有一些错漏之处,于是吾人决定手工测试一下。资历相关:熟练掌握在windows系统图形界面下进行新建文件(夹)、文件(夹)重命名等操作。

实验名称:手工测试 windows 10 英文版 中名称由合法中英文键盘符号(不含\/:*?"<>|)、数字、英文字母与汉字组成的文件(夹)按名称排序(Sort by Name)升序排列时的排序规律

先撂图
术语表:(不支持表格就算了,不支持制表符也忍了,连连续空格都不支持是怎么个情况!)
A<B ...............................表示A排在B之前
前导字符 .........................'-(英文连字符,减号)—(中文破折号)
英文键盘符号 ...................!#$%&(),.;@[]^_`{}~+=
中文键盘符号 ...................!¥…()【】、:;“”‘’《》,。?
数字 ................................0123456789
英文字母 ..........................a-zA-Z

规则
00.文件夹<文件,文件先依主名排序,主名相同依扩展名排序。文件夹名、文件主名、扩展名以下统称为「名称」,按下列步骤排序。
0.空串<非空串
1.忽略名称中的前导字符,将名称视为以下子串的拼接,自左向右依次比较所有子串:纯符号串、纯数字串、纯英文字母串、纯汉字串
1.1.首先按子串的类型排序:符号<数字<英文字母<汉字
1.2.类型相同的,按下列规则排序:
键盘符号:自左向右对位比较,英文键盘符号顺序为!#$%&(),.;@[]^_`{}~+=,中文全角符号一般跟随在对应英文符号之后,混排顺序为!!#$%&(()),,、.。;;?@[]^_`{}~‘’“”《》¥【】+=·…
数字:按数值大小由小到大排列,同等大小按前导零数目由多到少排列。(win 7可以在组策略中启用“关闭Windows资源管理器中的数值排序”将此规则更改为按每个数字位依次比较排序,其它版本未确认)
英文字母:自左向右对位比较,按a-z的顺序排列,不区分大小写
汉字:自左向右对位比较,根据系统当前的语言识别码(LCID,Windows Language Code Identifier)排序。LCID确定了系统语言格式和排序方法。比如简体中文可用的排序有拼音、姓氏和笔画数:日文可用的有XJIS和部首。这些设置可以在 “控制面板-区域-格式-排序” 中更改。没有特殊排序方式的语言格式(比如英语)依Unicode编码的code point排序。参考:Windows 资源管理器是如何排序文件...[MS-LCID]: Glossary
多语言混排的非Unicode排序规则尚不清楚,因为答主就是不清楚。

2.忽略前导字符后完全相同的,按以下规则自左到右依次比较对应前导字符串:自右向左对位比较,顺序为'<-<—

以上规则均可在测试图中找到对应实例验证。

更多非键盘直接输入的Unicode符号未经测试,因为数量太多,而且可以看出Microsoft试图在用一种更加有意义的顺序而不是简单的按位比较code point来排序这些符号,比如测试图中的½被放在0和1之间……吐槽不能。

如何命名?
1.参照传统纸质文件(夹)命名方法。把文件内容、时间、来源或其它必要信息写清楚。这是最先要做的。
2.添加前后缀实现想要的排序效果。
比如 ' 和 - 很适合用来在文件名前后标识同一文件的不同版本,比如 绝对最终版.pdf 和 -绝对最终版.pdf 和 绝对最终版'.pdf 甚至 ----------------'绝'对'最'终'版'''''''''''''.pdf 都会紧紧的挨在一起的。
答主用 ! 来提前和固定重要的项目,前缀 ! 可以对对象施加永久性“排列在前端”效果,这样想觉得好魔法(其实 ! 本来就被广泛用于标记重要项目)。
并不是按照ASCII码排序的,刚才测试了一下- - 注意 文件名中不能包含 \ / : * ? " < > | 因此将这几个符号排除测试范围 英文字符及数字字母排列顺序为: ! # $ % & ( ) , . ' - ; @ [ ] ^ _ ` { } ~ + = 0 1 2 … 9 A B C … Z 系统不区分大小写字母 刚才测试了一下中文字符,日语假名,汉字,部分其他语种等 中文英文日文字符混编顺序如下(半角) ! ! # $ % & ( ( ) ) , , . ' - — 。 : ; ; @ [ ] ^ _ ` { } ~ ~ ‘ “ 《 》 ¥ 『 』 【 】 + = × ÷ · … 0 1 2 9 A B C Z 吖 啊 八 压 作 (汉字应该是按照拼音排序,如果是多音字,则取其中一种发音作为排序音) 经过测试,日文假名排在汉字之前,其排序规则如下 (无论平片假名按照五十音图排列,不过浊音与半浊音排列在ya、wa、n等音前,且同一假名中片假名位于平假名前) 经过测试,绝大多数韩文字符排列在汉字之后,粗略测试只有子音ㄱ排在汉字之前 韩文字母、复合字母及单字均按照其第一个构成字母排序,第一个相同按照第二个,以此类推 排序方式是从子音 ㄱ 到 ㅎ 然后是母音 ㅏ 到 ㅣ (由于韩语只学了皮毛,因此我的判断并不一定准确) 经过测试,希腊语字符排在英文字母之后,日语假名之前,且按照希腊语字母标准排序方式排列,并且不区分大小写 经过测试阿拉伯语字符排列在日文假名之后,汉字及韩文之前 (由于没学过阿拉伯语,因此无从判断阿拉伯语字符排序方式) 由于时间关系,先是测试了这些字符排序方式 关于数学等专用符号,经过简单测试混杂于英文字符及中文字符后半段,甚至有些混杂到数字以及英文字母中 以下是其中几个专用符号插在中英文普通标点中的排序位置(因为数量实在庞大,无法全部测试,只能选择了几个) 【 】 + = ≠ ± × ÷ ∴ ∵ ≈ △ ◆ ◇ ○ ◎ ● ↑ → ↓ ← § · … 〓 ☆ ★ 0 1 2 3 9 ∞ A B C M N Na Nz № O P Z
参考:zhidao.baidu.com/questi