文件格式
什么是 RTF?富文本格式的工作原理
RTF 是 Microsoft 于 1987 年推出的文档格式,用纯 ASCII 字符描述带格式的文本。本文介绍它的结构、局限,以及转换时需要注意的地方。
作者: Hemen Dönüştür Editör Ekibi发布日期: 阅读约 7 分钟

你也许不常听人提起 RTF,但很可能已经和它打过很多次交道:在旧程序的“导出”菜单里,作为 Mac 上“文本编辑”的默认保存格式,或者在不同文字处理软件之间传递文档时作为“最保险的选项”。富文本格式(Rich Text Format)用纯文本字符来描述粗体、斜体、字体、颜色和表格等格式。本文将介绍 RTF 的诞生、RTF 文件的内部样貌、它的长处与短板,以及转换时需要注意的地方。
什么是 RTF?
RTF 是 Microsoft 为了在不同程序和操作系统之间传递文档而开发的一种基于文本的格式。它不像 DOC 那样是二进制格式:用记事本打开 RTF 文件,你能读到自己的文字,中间夹杂着反斜杠命令。但它又不像 HTML,并不是为手写而设计的。它的目的是让一个程序能够读取另一个程序生成的文档,并保留格式。
有一个常见的误解值得先澄清:电子邮件客户端和网页表单中的“富文本”选项,通常只是“带格式文本”的泛称,底层往往是 HTML。本文讨论的 RTF 则是一种具体的文件格式,扩展名为 .rtf,并有自己的语法。
简要历史
RTF 由 Microsoft Word 团队的 Richard Brodie、Charles Simonyi 和 David Luebbert 在 20 世纪 80 年代中后期开发。第一个 RTF 读写器于 1987 年随 Macintosh 版 Word 3.0 发布,实现的是 RTF 1.0。在随后的二十年里,这一格式随着 Word 一起发展:
| 版本 | 时间 | 说明 |
|---|---|---|
| 1.0 | 1987 年 | 第一版,随 Word 3.0(Mac)发布 |
| 1.1 | 1989 年 | 字体嵌入,随 Word 4 发布 |
| 1.2 - 1.4 | 1993 年 - 1995 年 9 月 | 随 Word 5、Word 6 和 Word 95 发布的版本 |
| 1.5 | 1997 年 4 月 | 随 Word 97 加入 Unicode 支持(\u 控制字) |
| 1.6 - 1.8 | 1999 年 5 月 - 2004 年 4 月 | 随 Word 2000、2002 和 2003 发布的版本 |
| 1.9.1 | 2008 年 3 月 | 最终版本,兼容 Word 2007 |
1.9.1 之后,Microsoft 不再改进 RTF 规范。根据美国国会图书馆的格式说明,Microsoft 表示 Word 2010 及以后引入的功能在保存为 RTF 时将不会保留。简而言之,RTF 仍然受支持,但已不再发展。
RTF 文件里面有什么?
RTF 建立在三个元素之上:
- 组(Group):用花括号
{ }括起来的部分。在组内所做的格式更改会在组结束时失效。 - 控制字(Control word):以反斜杠开头的字母序列,例如
\b(粗体)或\fs24(以半磅为单位的字号,24 表示 12 磅)。它们可以带数字参数:\b1开启粗体,\b0关闭粗体。 - 控制符号(Control symbol):反斜杠后跟一个非字母字符,例如
\~(不换行空格)或\'e9(以十六进制表示的代码页字符)。
一个简单的 RTF 文档如下所示:
{\rtf1\ansi\ansicpg1252\deff0
{\fonttbl{\f0 Times New Roman;}}
{\colortbl;\red200\green0\blue0;}
\f0\fs24 This is a {\b bold} word and some {\cf1 red} text in a caf\'e9.\par
}
文件以 {\rtf1 开头,接着是字符集(\ansi)和代码页(\ansicpg1252,即西欧语言的 Windows 代码页)。字体表(\fonttbl)和颜色表(\colortbl)在开头声明,正文中通过编号引用它们。\par 表示段落结束。文档的其余部分包含节设置、页眉页脚、段落和表格;美国国会图书馆指出,RTF 把表格视为一种段落。
非 ASCII 字符有两种写法。较早的方法使用 \'e9 这样的十六进制转义,引用所声明代码页中的字符(在代码页 1252 中,E9 是“é”)。RTF 1.5 加入的方法使用 3? 这样的 Unicode 控制字:数字是字符的 Unicode 值(20013 即汉字“中”,U+4E2D),后面的字符是供不支持 Unicode 的阅读器使用的替代字符。RTF 并不以 UTF-8 这样的 Unicode 编码存储文本;文件本身通常是 7 位 ASCII。
RTF 用在哪里?
- 在程序之间传递文档:在不同的文字处理软件或操作系统之间转移带格式的文本。
- 软件的报表输出:许多商务和行业应用以 RTF 生成带格式的报表而不依赖 Word,因为生成 RTF 比生成 DOCX 简单得多。
- 剪贴板:在 Windows 和 macOS 上复制带格式的文本时,RTF 是常用的格式之一。
- 简易编辑器:写字板(WordPad)和“文本编辑”默认使用 RTF。
优点与缺点
| 优点 | 缺点 |
|---|---|
| 几乎所有文字处理软件都能读取 | 自 2008 年以来不再发展 |
| 基于文本,容易提取文字 | 含图片的文件可能非常大 |
| 没有宏语言 | 嵌入的 OLE 对象和模板引用可能带来安全风险 |
| 生成简单,非常适合作为软件输出 | 某个程序支持哪个版本和哪些功能往往不明确 |
| 各版本之间向前、向后兼容 | Word 的高级功能会丢失 |
关于安全的说明:RTF 不能携带宏,但并非没有风险。维基百科汇总的记录显示,RTF 文件曾被用于通过模板注入和嵌入 OLE 对象发起攻击,旧版写字板和 Word 中的相关漏洞分别在 2017 年和 2015 年得到修补。对待来源不明的 RTF 文件,请像对待其他文档一样谨慎。
哪些程序可以打开 RTF?
Microsoft Word、LibreOffice Writer、Apple Pages、“文本编辑”和 WPS Office 都能打开和保存 RTF。长期作为 Windows 默认 RTF 编辑器的写字板已不再包含在当前版本的 Windows 11 中,因此在那里需要使用 Word 或 LibreOffice。美国国会图书馆还指出,网页版和平板版 Word 无法打开 RTF 文件。Google 文档可以导入 RTF,也可以把文档下载为 RTF。
常见问题及解决方法
中文或带重音的字符显示错误
如果生成文件的程序声明了错误的代码页,或者使用了另一个代码页的十六进制转义而不是 Unicode 控制字,字符就会被替换成别的字符。例如,用简体中文代码页 936 写入的文字如果按代码页 1252(西欧)解读,就会变成一串看不懂的拉丁字母乱码。用 Word 或 LibreOffice 打开文件再另存为 DOCX,是修复源文件最简单的方法。
文件比预期大得多
RTF 通常以十六进制文本而不是二进制来存储图片,这会让图片数据大约增加一倍。对于含图片的文档,DOCX 或 PDF 生成的文件要小得多。
格式在不同程序之间发生变化
每个程序支持的 RTF 子集都不同,并会忽略无法识别的控制字。如果外观必须完全一致,请以 PDF 形式分享最终版本。
RTF 文件转换技巧
在我们的转换器上,RTF 文件会上传到我们的服务器,用 LibreOffice 处理,并在 30 分钟内删除。RTF、DOCX、DOC 和 PDF 之间的转换直接进行,没有中间步骤,因此页面版式、页眉页脚、表格和列表编号都会保留。
- RTF 转 Word 是编辑旧软件输出内容、缩小文件体积的最佳选择。
- RTF 转 PDF 可以固定原本会因程序而异的外观。
- RTF 转 TXT 去掉所有控制字,只留下可读的文字。
- 使用 Word 转 RTF 时请注意,Word 2010 以后的功能(较新的图表类型、部分排版选项)可能在 RTF 中没有对应项。
- 如果需要从纯文本得到带格式的文档,TXT 转 RTF 会逐段转移文字。从 HTML 和 Markdown 等来源生成的 RTF 也会通过 LibreOffice 的 RTF 导出器保留粗体、标题、列表和表格。
常见问题
RTF 和 DOCX 有什么区别?
RTF 通过嵌在纯文本中的控制字来描述格式,自 2008 年以来没有变化。DOCX 是现行的、由 XML 部件组成的基于 ZIP 的标准。DOCX 支持的功能更多,对于含图片的文档也小得多。
RTF 文件可以包含宏吗?
不可以,RTF 没有宏语言。但嵌入的 OLE 对象和模板引用仍可能被滥用,所以对来源不明的 RTF 文件仍需保持谨慎。
RTF 还受支持吗?
是的,Word 和其他文字处理软件仍然可以打开和保存 RTF。但规范的最后一个版本 1.9.1 发布于 2008 年 3 月,Microsoft 已不再开发这一格式。
在 Windows 11 上怎么打开 RTF 文件?
在没有写字板的版本上,可以用 Word、LibreOffice Writer 或 WPS Office 打开。如果只需要阅读,把它转换为 PDF 后在浏览器中查看也可以。
为什么 RTF 中的特殊字符会出错?
通常是因为生成文件的程序声明了错误的代码页。写入 Unicode 控制字的程序可以完全避免这个问题。


