这个Perl字符串是什么编码的?

前端之家收集整理的这篇文章主要介绍了这个Perl字符串是什么编码的?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Mail :: IMAPClient从imap服务器检索邮件头.它很棒.但是当标题包含[a-z | A-Z | 0-9]之外的任何字符时,我使用的字符串看起来像这样:

>主题:取消消息en =?UTF-8?B?ZnJhbsOnYWlzIMOgIGxhignvbg ==?=(原始字符串:“Un messageenfrançaisàlacon”)
>身体:
= C3 = A9aeio = C3 = B9 = C3 = A8 = C3 = A8(原字符串:éaeioùèè)

>这种奇怪的格式是什么?这是着名的“perl字符串
内部“格式?
>处理人类习语最安全的方法是什么?
来自IMAP服务器?

解决方法

正文编码是Quoted-Printable;标题(主题)编码是MIME“encoded-word”编码(base64的“B”类型).处理这两者的最佳方法是将电子邮件传递到能够处理MIME的模块,例如 Email::MIME或更旧的buggier MIME::Lite.

例如:

# $message was retrieved from IMAP
my $mime = Email::MIME->new($message);
my $subject = $mime->header('Subject'); # automatically decoded
my $body = $mime->body_str; # also automatically decoded

但是,如果您需要在整个消息的上下文之外处理它们,还有像Encode::MIME::HeaderMIME::QuotedPrint这样的模块.

猜你在找的Perl相关文章