为什么 PHP chunk_split() 默认块长度为 76?

Why does PHP chunk_split() default to a chunk length of 76?

谁能解释一下为什么 76 个字符是默认值,为什么这在实践中可能有用?

因为 RFC 2045 语义指定编码行不得超过 76 个字符,不包括尾随的 CRLF。

附录: [警告:高度迂腐的介绍如下]

"Content-Transfer-Encoding" 有几种不同的机制,其中两种主要方法(针对本次讨论)是 "quoted-printable" 和 "Base64"。

Quoted-Printable 编码旨在表示与 US-ASCII 字符集中的可打印字符相对应的数据。 Base64 Content-Transfer-Encoding 旨在以不需要人类可读的形式表示任意数据序列。两种编码都将它们的输入从任意域转换为 material 安全地进行 受限传输 .

"Restricted transports" 表示只能处理 7 位数据的传输,即声学调制解调器和模拟线路。换句话说,它被设计成在非常恶劣的条件下仍然可靠。

因为 Quoted-Printable 通常预期是面向行的,并且因为 RFC 2045 可以追溯到 1996 年,所以假设规范编写者期望文本会在80 列 CRT 或由点阵打印机或 TTY 打印。如果这是真的,那么 76 个字符的默认值将是为了适应可用显示技术的最低公分母。

如果你想知道为什么在纯文本传输的情况下使用 Base64 是因为有几种子字符串不能根据 quoted-printable 编码规则。 Base64 没有这些相同的限制,这使得它的使用变得合理。