2013-07-24 33 views
1

幫助我設法從他們的學科的Gmail收到的電子郵件中包含UTF-8字符,需要在解析MIME主題perl的

Subject: =?utf-8?B?5L2g5aW9IOS9oOWlvQ==?= 

我搜索我發現INTERENT其編碼的引用可打印

我試着使用所示代碼解碼對象

use MIME::QuotedPrint; 

print decode_qp("?utf-8?B?5L2g5aW9IOS9oOWlvQ==?="); 

,但它打印相同的消息,我也試着刪除?utf-8?,但沒有用,所以可以幫我在轉換AB OVE受UTF-8字符的代替上述

回答

2

編碼使用Encode::MIME::Header模塊,如在

$ perl -MEncode -le 'print Encode::encode("utf8", \ 
    Encode::decode("MIME-Header", "=?utf-8?B?5L2g5aW9IOS9oOWlvQ==?="))' 
你好 你好 

#! /usr/bin/env perl 

use v5.10.0; 
use strict; 
use warnings; 

use Encode qw/ decode /; 

my $subject = "=?utf-8?B?5L2g5aW9IOS9oOWlvQ==?="; 

binmode STDOUT, ":encoding(UTF-8)"; 
say decode "MIME-Header", $subject; 
+0

你的答案是很好 –

1

使用MIME::Base64,從除去從開始?utf-8?B??=結束:

use MIME::Base64; 
print decode_base64('5L2g5aW9IOS9oOWlvQ=='), "\n"; 
+0

你的回答很好 –

+0

...然後通過Encode的'decode_utf8'傳遞結果。 – ikegami

+0

...然後問自己,爲什麼這不起作用,如果你解析的下一個消息在ISO-somehing中編碼它的主題。 – innaM