内容

名称

MIME::QuotedPrint - 编码和解码可打印引号字符串

概要

use MIME::QuotedPrint;

$encoded = encode_qp($decoded);
$decoded = decode_qp($encoded);

描述

此模块提供函数,用于将字符串编码和解码为 RFC 2045 - MIME(多用途互联网邮件扩展) 中指定的可打印引号编码。可打印引号编码旨在表示主要由对应于 ASCII 字符集中的可打印字符的字节组成的數據。每个不可打印字符(按英语美国人定义)都用一个三元组表示,该三元组由字符“=”后跟两位十六进制数字组成。

提供以下函数

encode_qp( $str)
encode_qp( $str, $eol)
encode_qp( $str, $eol, $binmode )

此函数返回作为参数给出的字符串 ($str) 的编码版本。

第二个参数($eol)是要使用的行尾序列。它是可选的,默认值为“\n”。每个“\n”都会被替换成这个字符串,它也用于额外的“软换行”以确保没有一行超过 76 个字符。将其传递为“\015\012”以生成适合外部使用的數據。字符串“\r\n”在许多平台上产生相同的结果,但并非所有平台都如此。

第三个参数($binmode)如果传递为 TRUE 值,则会选择二进制模式。在二进制模式下,“\n”将以与任何其他不可打印字符相同的方式进行编码。这确保了解码器最终将获得完全相同的字符串,无论它使用什么行尾序列。通常,最好对二进制数据使用 base64 编码;请参阅 MIME::Base64

一个 $eol 为 ""(空字符串)是特殊的。在这种情况下,不会引入“软换行”,并且二进制模式实际上已启用,以便原始数据中的任何“\n”也会被编码。

decode_qp( $str )

此函数返回作为参数给出的字符串的纯文本版本。结果的行以“\n”结尾,即使 $str 参数包含以“\r\n”结尾的行。

如果您不想将这些例程导入到您的命名空间中,您可以像这样调用它们

use MIME::QuotedPrint ();
$encoded = MIME::QuotedPrint::encode($decoded);
$decoded = MIME::QuotedPrint::decode($encoded);

Perl v5.8 及更高版本允许字符串中使用扩展的 Unicode 字符。这些字符串不能直接编码,因为 Quoted-Printable 编码仅针对单字节字符定义。解决方案是使用 Encode 模块来选择您想要的字节编码。例如

use MIME::QuotedPrint qw(encode_qp);
use Encode qw(encode);

$encoded = encode_qp(encode("UTF-8", "\x{FFFF}\n"));
print $encoded;

版权

版权所有 1995-1997,2002-2004 Gisle Aas。

此库是自由软件;您可以在与 Perl 本身相同的条款下重新分发和/或修改它。

另请参阅

MIME::Base64