33.25 Base 64 编码

Base 64 编码常用于电子邮件,将 8 位字节序列转换为更长的 ASCII 可见字符序列。 该编码标准定义于互联网 RFC242045 与 RFC 4648。本节介绍用于 Base 64 编码与解码的相关函数。

Command: base64-encode-region beg end &optional no-line-break

该函数将 begend 的区域转换为 Base 64 编码,返回编码后文本的长度。 若区域中存在多字节字符,函数将报错;即在多字节缓冲区中,区域只能包含 ASCII 字符或原始字节。

通常,该函数会在编码文本中插入换行符以避免行过长。但若可选参数 no-line-break 为非 nil,则不插入换行,输出为单一长行。

Command: base64url-encode-region beg end &optional no-pad

该函数与 base64-encode-region 类似,但按照 RFC 4648 实现适用于 URL 的 Base 64 变体, 且不会在编码文本中插入换行符,输出为单一长行。

若可选参数 no-pad 为非 nil,函数不会生成填充符(=)。

Function: base64-encode-string string &optional no-line-break

该函数将字符串 string 转换为 Base 64 编码,返回包含编码结果的字符串。 与 base64-encode-region 相同,若字符串中存在多字节字符将报错。

通常,该函数会在编码文本中插入换行符以避免行过长。但若可选参数 no-line-break 为非 nil,则不插入换行,结果为单一长字符串。

Function: base64url-encode-string string &optional no-pad

base64-encode-string 类似,但生成适用于 URL 的 Base 64 变体, 且不插入换行符,结果为单一长行。

若可选参数 no-pad 为非 nil,函数不生成填充符。

Command: base64-decode-region beg end &optional base64url ignore-invalid

该函数将 begend 区域的 Base 64 编码转换为对应解码文本, 返回解码后文本的长度。

解码函数会忽略编码文本中的换行符。

若可选参数 base64url 为非 nil,则填充符为可选, 并使用 URL 专用的 Base 64 编码变体。 若可选参数 ignore-invalid 为非 nil,则所有无法识别的字符均被忽略。

Function: base64-decode-string string &optional base64url ignore-invalid

该函数将字符串 string 从 Base 64 编码转换为对应解码文本, 返回包含解码结果的单字节字符串。

解码函数会忽略编码文本中的换行符。

若可选参数 base64url 为非 nil,则填充符为可选, 并使用 URL 专用的 Base 64 编码变体。 若可选参数 ignore-invalid 为非 nil,则所有无法识别的字符均被忽略。


Footnotes

(24)

RFC 是 请求评议(Request for Comments)的缩写,是一类带编号的互联网说明文档,用于描述技术标准。 RFC 通常由技术专家自主撰写,行文风格注重实用、以实践经验为依据。