Everything to Markdown by 星球小捕手

不看扩展名:格式到底是怎么被识别出来的

把一份文件拖进 Everything to Markdown,它几乎立刻就知道该怎么处理。你可能会以为:它是看扩展名吧?.docx 就当 Word,.pdf 就当 PDF。但事实是——扩展名只是最后才看的线索,而且常常靠不住

扩展名为什么不可信

扩展名是"你(或某个软件)给文件起的名字",不是文件自己的身份。以下情况太常见了:

  • 把 .zip 改名成 .docx,想绕过邮件附件限制;
  • 截图导出时手滑选错后缀;
  • 从网上下载的 PDF,后缀其实是 .pdf(没错)但内容其实是 HTML;
  • 根本没有扩展名,比如一段管道里传来的字节流。

如果只信扩展名,这些文件要么转错,要么直接失败。Everything to Markdown 的做法是:先看文件自己说什么,再看你叫它什么

真正的依据:文件内容

每种格式在字节层面都有"自报家门"的方式。识别器会按顺序嗅探这些签名:

1. 魔数(Magic Number)

很多文件开头几个字节是固定的"身份证":

  • PDF%PDF- 开头;
  • RTF{\rtf 开头;
  • 新式 Office(.docx/.xlsx/.pptx)、EPUB、ODF 都是 ZIP 包,以 PK\x03\x04 开头。

看到 %PDF-,不管它叫什么名字,都知道是 PDF。

2. 包内结构(针对 ZIP 家族)

Office 三件套和 EPUB、ODF 都是 ZIP。光看出是 ZIP 还不够,得看包里有什么

  • .docx 里有 word/document.xml
  • .xlsx 里有 xl/workbook.xml
  • .pptx 里有 ppt/presentation.xml
  • .epub 里有 META-INF/container.xmlmimetype
  • .odt/.ods/.odp 在 content.xml 之外还带 mimetype 声明自己是谁。

于是同一个 ZIP 容器,靠内部文件名就能精准区分是 Word 还是 Excel。

3. 纯文本格式的"气味"

CSV 没有魔数,也没有签名。它只能靠内容形态判断:是否每行用逗号(或分号/制表符)分隔、表头是否对齐、引号是否成对。这类"无签名"格式,扩展名才真正派上用场——如果你给了 .csv,识别器会更有把握。

一个判断顺序

综合起来,识别大致是这样一条短路链:

有魔数吗? ── 有 ──▶ 直接定格式(PDF/RTF/ZIP…)
   │
   └─ 没有(如 ZIP)
            │
            ▼
       解包看内部文件名? ──▶ 区分 docx/xlsx/pptx/epub/odf
            │
            ▼
       像 CSV 吗?(逗号分隔、表头对齐)
            │
            ▼
       实在不行,再用扩展名兜底

这对你意味着什么

实际用起来,你会感觉到:

  • 改名不怕:把 报告.pdf 改成 报告.txt,照样能转;
  • 扩展名写错能救:后缀和实际内容不一致时,以内容为准;
  • CSV 这类"裸"格式最好带上扩展名,帮识别器省一步猜测。

小结

"看内容,不看出身"让 Everything to Markdown 比"看后缀"的工具稳得多。但还有个更硬的限制我们一直没提:即使认出了格式,转换也未必能发生——尤其是 PDF。下一篇就聊这个边界。

← 上一篇:统一文档模型 · 返回列表 · 下一篇:本地转换 →