Как я могу конвертировать сообщения из файла mbox в UTF-8? - PullRequest
2 голосов
/ 16 декабря 2008

Я пытаюсь изменить приведенную ниже программу, чтобы убедиться, что каждое сообщение конвертируется в utf-8 с помощью Encode :: decode (), но я не уверен, как и где его разместить, чтобы он работал.

#!/usr/bin/perl
use warnings;
use strict;
use Mail::Box::Manager;

open (MYFILE, '>>data.txt');
binmode(MYFILE, ':encoding(UTF-8)');


my $file = shift || $ENV{MAIL};
my $mgr = Mail::Box::Manager->new(
    access          => 'r',
);

my $folder = $mgr->open( folder => $file )
or die "$file: Unable to open: $!\n";

for my $msg ( sort { $a->timestamp <=> $b->timestamp } $folder->messages)
{
    my $to          = join( ', ', map { $_->format } $msg->to );
    my $from        = join( ', ', map { $_->format } $msg->from );
    my $date        = localtime( $msg->timestamp );
    my $subject     = $msg->subject;
    my $body        = $msg->decoded->string;

    # Strip all quoted text
    $body =~ s/^>.*$//msg;

    print MYFILE <<"";
From: $from
To: $to
Date: $date
Subject: $subject
\n
$body

}

Ответы [ 2 ]

0 голосов
/ 16 декабря 2008

Из документации я подозреваю, что вы хотите заменить

my $body        = $msg->decoded->string;

с

my $body        = $msg->decoded('UTF-8')->string;

Хотя я не совсем уверен, и это может вообще не иметь значения.

0 голосов
/ 16 декабря 2008

Ничто в скрипте, кажется, не указывает, в какой кодировке вы ожидаете ввод данных ... обычно это важно, так как автоопределение кодировки символов в харде (и обычно не поддерживается библиотеками кодирования).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...