MIME::QuotedPrint - 編碼和解碼引號可列印字串
use MIME::QuotedPrint;
$encoded = encode_qp($decoded);
$decoded = decode_qp($encoded);
此模組提供函式來編碼和解碼字串成 RFC 2045 - MIME (多用途網際網路郵件擴充功能) 中規定的引號可列印編碼。引號可列印編碼用於表示資料,這些資料主要包含與 ASCII 字元集中的可列印字元對應的位元組。每個不可列印字元 (由美國英語定義) 都表示為由等號 (=) 後接兩個十六進位數字的三元組。
提供以下函式
此函式傳回以引數形式提供的字串 ($str) 的編碼版本。
第二個引數 ($eol) 是要使用的行尾序列。它是選用的,預設為 "\n"。每個出現的 "\n" 都會替換成此字串,它也會用於額外的「軟換行」,以確保沒有任何一行會超過 76 個字元。將它傳入 "\015\012" 以產生適合外部使用的資料。字串 "\r\n" 在許多平台上會產生相同的結果,但並非全部。
如果第三個引數 ($binmode) 傳入 TRUE 值,將會選用二進位模式。在二進位模式中,"\n" 會以與任何其他不可列印字元相同的方式編碼。這可確保解碼器會產生完全相同的字串,無論它使用哪個行尾序列。一般來說,建議對二進位資料使用 base64 編碼;請參閱 MIME::Base64。
一個 ""(空字串)的 $eol 是特殊的。在這種情況下,不會引入任何「軟換行」,且二進位模式會有效啟用,以便編碼原始資料中的任何「\n」。
此函式會傳回作為引數提供的字串的純文字版本。結果的行以「\n」終止,即使 $str 引數包含以「\r\n」終止的行。
如果您不想將這些常式匯入您的命名空間,您可以呼叫它們為
use MIME::QuotedPrint ();
$encoded = MIME::QuotedPrint::encode($decoded);
$decoded = MIME::QuotedPrint::decode($encoded);
Perl v5.8 和更新版本允許在字串中使用延伸 Unicode 字元。此類字串無法直接編碼,因為引號可列印編碼僅定義給單位元組字元。解決方案是使用 Encode 模組來選擇您想要的位元組編碼。例如
use MIME::QuotedPrint qw(encode_qp);
use Encode qw(encode);
$encoded = encode_qp(encode("UTF-8", "\x{FFFF}\n"));
print $encoded;
Copyright 1995-1997,2002-2004 Gisle Aas。
此函式庫是免費軟體;您可以在與 Perl 本身相同的條款下重新散布或修改它。