larsmagne23 · 2026-02-03

那些旧邮件里的等号到底是怎么回事

摘要

近期社交媒体上大量流传旧邮件截图,其中充斥着神秘的等号。作者作为邮件客户端开发者,解释了这些等号源自 quoted-printable 编码机制——用于处理长行折行和非 ASCII 字符。而这些等号之所以残留在可读文本中,是因为邮件转换者使用了有缺陷的解码方式,未能正确处理行尾换行符差异和字符编码。

内容框架与概述

文章以近期 Twitter 上流传的旧邮件截图为引子,针对人们对邮件中大量等号的困惑展开技术解释。作者首先否定了等号是密码或 OCR 产物的说法,指出问题本质是邮件格式转换时的处理失误。

作者随后深入讲解 quoted-printable 编码的两大功能:一是用等号加回车换行标记长行的软换行点,二是用等号加十六进制编码表示非 ASCII 字符(如 =C2=A0 表示不间断空格)。这两种机制在正常邮件客户端中会被透明解码,用户不会看到等号。

问题出在将邮件导出为可读格式时,处理者犯了两个错误:将 CRLF 行尾转换为 Unix 的 LF 后未调整解码逻辑,导致软换行解码失败;同时对非 ASCII 字符编码也只做了简单的搜索替换而非规范解码。作者在最后补充说明,RFC 标准原本设想 quoted-printable 在接收端即被解码,但实际实现中多数客户端能容错处理单字节换行,而此次泄露邮件的处理者可能复用了 SMTP 服务器上下文中的算法,恰好无法兼容 Unix 换行格式。

核心概念及解读

Quoted-Printable 编码:一种 MIME 内容传输编码,用等号标记长行折行和非 ASCII 字符,使邮件在纯文本环境中保持基本可读性。

软换行(Soft Line Break):以 =CRLF 三字节序列表示的人工断行,解码时应将其还原为连续文本,不产生实际换行。

CRLF 与 LF 换行差异:Windows/SMTP 标准使用回车加换行两字节,Unix 仅用换行一字节,转换时若未同步调整解码逻辑会导致字符丢失或残留。

非 ASCII 字符编码:等号后跟两位十六进制数表示特殊字符,如 =C2=A0 代表 UTF-8 编码的不间断空格,常见于文本缩进场景。

Garbage In, Garbage Out:当解码器遇到不合规的输入(如等号后非合法十六进制也非合法换行),只能输出乱码,体现了邮件处理者未使用标准解码器的后果。


原文信息

字段内容
原文What’s up with all those equals signs anyway?
作者larsmagne23
发表日期2026-02-03

此摘要卡片由 AI 自动生成