Проблемы с ботом 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);
}