现今大家在使用电脑时,可能很少会注意到扩展名的长度,但在几十年前,这可是一条非常严格的技术规则。
一、最早的规则:文件扩展名必须是 3 个字符
在 MS-DOS 和早期 Windows 中,文件名和扩展名必须遵守一个规则:
8.3 文件名格式(8.3 Filename Convention)
它的意思是:
文件名最多 8 个字符扩展名最多 3 个字符
例如:
README.TXTPHOTO.JPGDATA.DOC
这条规则的出现,和当时的计算机硬件条件有关。
在 1980 年代,计算机的存储空间和内存都非常有限。
为了让文件系统结构尽可能简单、占用空间更少,设计者就规定:
- 文件名最多 8 个字符
- 扩展名最多 3 个字符
这样目录结构会更简单,操作系统处理文件名时也更高效。
因此,在那个时代诞生的大量文件格式,几乎都遵循这个规则:
.txt.exe.doc.gif.png.bmp
你会发现,它们清一色都是 3 个字母的扩展名。
二、JPEG 原本是 4 个字母
事情的例外出现在 JPEG 图片格式。
JPEG 的名字来自一个国际标准组织:
Joint Photographic Experts Group
翻译过来就是:
联合图像专家组
他们制定了一种新的图像压缩标准,于是就用这个组织的缩写来命名。
所以,这个格式最初的标准扩展名其实是:
.jpeg
那么问题来了。
在 MS-DOS 的 8.3 文件名规则下,扩展名只能有 3 个字符。
而 .jpeg 有 4 个字符,根本无法使用。
于是工程师们只能把 .jpeg 缩短,变成 .jpg
从此 .jpg 这个扩展名就诞生了。
可以说 .jpg 是 被 DOS 规则压缩出来的名字。
三、但是后来系统升级了
到了 1995 年,Windows 95 发布时,微软终于解决了这个历史限制。
他们引入了一个重要功能:
长文件名(Long File Name,LFN)
从此以后:
- 文件名不再限制为 8 个字符
- 扩展名也不再必须是 3 个字符
因此这些扩展名都变得完全合法:
.jpeg.html.xhtml.backup
换句话说,.jpeg 从技术上,已经可以恢复原本的名字。
但是问题又出现了:
当时全世界的软件、相机、图片程序都已经在使用 .jpg。
如果突然全部改回 .jpeg,反而会造成兼容问题。
于是最终的结果就是:
两个扩展名一起存在。
.jpg.jpeg
它们指向的是同一种图片格式。
四、为什么其他格式没有这种双扩展名
因为大多数文件格式在设计时,本来就考虑到了 DOS 的限制。
例如:
.png → Portable Network Graphics.gif → Graphics Interchange Format.bmp → Bitmap.tif → Tagged Image File
这些格式在命名时,就直接设计成 3 个字母。
因此:
- 不需要缩写
- 不需要改名
- 也就不会产生两个扩展名
只有 JPEG 这个格式,是先有 4 字母名字,后来为了兼容 DOS 才被迫变成 3 个字母的。
五、一个很多人不知道的小事实
在 Windows / Linux / macOS 系统中:
.jpg.jpeg
没有任何区别。
你可以直接把文件改名:
photo.jpg → photo.jpeg
图片内容不会发生任何变化。
因为真正决定文件格式的,并不是扩展名,而是:
文件内部的数据结构和编码方式。
JPEG 文件在开头都有一个特殊标识(文件头):
FF D8 FF
只要软件识别到这个结构,就会知道:
这是一个 JPEG 图片。
换句话说,扩展名只是给人看的提示。
操作系统和图像软件,真正识别的是文件内部的编码格式。
-1.gif)