2013-07-24 1 views
1

мне удалось получить электронные письма от Gmail с их предмет содержит UTF-8 символов,Нужна помощь в разборе мим предмет Perl

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

Я искал интерент я нашел его кодированный кавычко печати

Я попытался используя показанный код для декодирования испытуемого

use MIME::QuotedPrint; 

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

но печатает то же самое сообщение, я также попытался удалить ?utf-8?, но не использовать, так что может помочь мне в преобразовании аЬ Ове при условии 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-кодировании. – innaM