Проблемы с ботом ICQ в чате с кодировками

Вчера я писал простую программу на Perl.

Это бот icq, вы пишете сообщение как математическое выражение, и оно вычисляет значение.

Проблема в том, что входящее сообщение имеет не однобайтовую кодировку, и когда оно записывает в файл, есть много плохих символов и, конечно, calc не может обработать этот файл.

как я могу конвертировать входящее сообщение в ASCII?

Вот источник:

#!/usr/bin/perl

use Net::OSCAR;
use Encode;
use strict;

my ($UIN, $PASSWORD, $oscar, $t, $msg);

$UIN='675349295';
$PASSWORD='passwd';

$oscar = Net::OSCAR->new();
$oscar->set_callback_im_in(\&send_answer);
$t = 0;

while (1)
{
    if (!$oscar->is_on && (time() - $t) > 120)
    {
        $oscar->signon($UIN, $PASSWORD);
        $t=time();
    }

    $oscar->do_one_loop();
}

sub send_answer()
{
    my($oscar, $sender, $msg) = @_;

    if ($msg eq "quit")
    {
        $oscar->signoff();
        exit();
    }

    open(my($fh), '>', '/tmp/msg');
    print $fh "$msg";
    close $fh;

    my($ans)=`calc -p -f /tmp/msg`;
    $oscar->send_im($sender, $ans);
}

0 ответов

Другие вопросы по тегам