上周给学员讲课,随手把一个.docx文件改了后缀想发群里,结果——
卧槽,它直接变成ZIP了。
当时现场直接炸锅,一堆人问我是不是在变魔术。
说真的,这不是魔术,这是Word从2007版本开始就在用的一种文件格式。苹果用户可能早就习惯了,文件右键"显示包内容"就能看到里面的东西。但Windows用户如果不手动改后缀,基本一辈子都不知道自己每天打交道的Word文档,居然是穿着马甲的压缩包。
今天把这个原理拆开讲讲,看完你绝对会觉得——自己用了十几年假Word。
Word 2007那场革命:从二进制到XML
先说点背景,帮助大家理解这事儿的来龙去脉。
2007年之前,Word用的是.doc格式。这玩意儿是微软私有的二进制格式,结构封闭到什么程度?普通人根本别想看到里面写的是什么,想提取个图片都得专门工具。
然后微软干了件大事——搞出了一套叫Office Open XML的标准,简称OOXML。这玩意儿在2008年被ISO(国际标准化组织)正式采纳为国际标准,编号ISO/IEC 29500。
从Word 2007开始,所有新建的文档默认保存为.docx格式。这个"x"就代表XML——一种用普通文本存储结构化数据的技术。
说白了就是:微软把Word文档的核心内容,从一种只有它自己能读懂的"加密格式",变成了一种任何人都能看懂的"明文格式"。
这件事的意义远不止技术人员能看懂代码那么简单。它让Word文档变得更小(文本压缩效率比二进制高)、更开放(任何程序都能读取部分内容)、更安全(部分损坏时可能恢复更多数据)。
揭开马甲:docx到底长什么样
现在动手验证一下。我用一个普通Word文档举例,改一下后缀,亲眼看它露出原形。
第一步:找到任意一个.docx文件,选中它,按F2或者右键重命名,把扩展名从".docx"改成".zip"。系统提示"可能会导致文件不可用"——别怕,这是吓唬小白的。
第二步:用任意解压工具打开这个ZIP。Bandizip、7-Zip、WinRAR,甚至Windows自带的解压功能都能用。

打开之后,你会看到这样的目录结构:


这就是Word文档的"五脏六腑":
[Content_Types].xml:告诉系统这个包里有哪些文件、什么类型 _rels/文件夹:存储文件之间的关系,比如文档和样式的关系、文档和图片的关系 word/document.xml:这就是你写的文字内容,主体文章都在这儿 word/styles.xml:存储你的标题样式、段落格式、字体设置 word/settings.xml:Word的内部设置,比如拼写检查是否开启、修订模式等 word/media/文件夹:文档里所有嵌入的图片,都在这里 docProps/文件夹:文档属性,元数据,包括标题、作者、创建时间等信息
打开document.xml看看内容:

满屏都是<w:p>、<w:r>、<w:t>这样的标签。看不懂?没关系,我帮你翻译一下:
w:p是"段落"(paragraph)的缩写,w:r是"运行"(run)的缩写,w:t是"文本"(text)的缩写。
Word用这三层结构来存储你的文档:段落→运行→字符。每个<w:p>是一段,每段里可能有多个<w:r>表示不同的格式片段(比如有的字加粗、有的字是红色),每个<w:r>里面的<w:t>才是真正的文字内容。
是不是突然觉得,Word写作这件事变得透明了很多?
图片提取的正确姿势
知道docx是ZIP之后,有个骚操作你必须学会:批量提取Word文档里的图片。
以前想从别人的Word文档里偷图?得一个个另存为,烦死。现在直接三步:
把docx改成zip 解压到文件夹 去word/media/目录,所有图片都在这儿
不管是Word文档、Excel表格(.xlsx)还是PPT演示文稿(.pptx),只要是Office 2007以后新建的文件,全都是ZIP压缩包,解压之后都能直接访问里面的素材。
一个冷知识:怎么判断任意文件是不是ZIP?
所有ZIP格式的文件,开头都有两个固定的"魔术字节"——50 4B 03 04。
看不懂?没关系,这串数字对应的ASCII字符就是"PK"(PK就是压缩软件PKZIP的缩写)。
以后遇到任何文件想验证格式,直接扔进十六进制编辑器看一眼开头两个字节是不是50 4B,就知道它是不是ZIP格式了。
说实话,这个知识点知道的人真的不多,但它的实用价值远超你的想象。
当你不小心损坏了Word文档打不开的时候,解压后的XML文件可能还能抢救出部分文字;当你想提取文档里嵌入的所有图片时,再也不需要一个一个另存为;当你需要批量处理大量文档时,直接写脚本操作XML比操作Word对象模型简单一百倍。
这个世界比你以为的更透明。
你平时会自己动手改文件后缀吗?有没有发现过什么让你震惊的文件格式秘密?评论区聊聊。
觉得有用的话,点赞、在看、转发三连走起,也欢迎星标我,第一时间收到推送。
咱们下期见。
夜雨聆风