У когонибудь получилось отправлять этим модулем русские sms через ком порт??
use Device::Gsm;
$content = "ТЕСТ";
my $gsm = new Device::Gsm( port => '/dev/cuad0' );
if( $gsm->connect() ) {
print "connected!\n";
} else {
print "sorry, no connection with gsm phone on serial port!\n";
}my $lOk = $gsm->send_sms(
content => $content,
recipient => '+7ххххххххх',
class => 'normal', # try `flash'
mode => 'pdu'
);
if( $lOk ) {
print "SMS check money sent!\n" ;
} else {
print "Error in sending!\n";
exit ;
}на трубку приходит "ôåóô"
я понимаю что это UTF8, пробовал набить в кодировке UTF8, на трубку приходит "DcDDiDc"
конвертировал всеми возможными способами, безрезультатно :(
в модуле gsm.pm нашел строки которые кодируют мессагу перед отправкой
# Encode text
$text = Device::Gsm::Charset::iso8859_to_gsm0338( $text );
my $enc_msg = Device::Gsm::Pdu::encode_text7( $text );
пробовал закоментировать эту функцию, с сделать
my $enc_msg = $text;
тогда вообще не отсылает видимо формат PDU нарушается
>$content = "ТЕСТ";И какая у вас кодировка?
> $text = Device::Gsm::Charset::iso8859_to_gsm0338($text);
тут из кодировки 8859 делается некая gsm0338
> my $enc_msg = Device::Gsm::Pdu::encode_text7($text);тут конвертируется видимо в 7битку
итого текст должен быть в iso8859,но т.к. iso8859 это еще не русские буквы то надо искать
что нить типа Device::Gsm::Charset::ВАША_КОДИРОВКА_to_gsm0338($text);
>[оверквотинг удален]
>> $text = Device::Gsm::Charset::iso8859_to_gsm0338($text);
>
>тут из кодировки 8859 делается некая gsm0338
>> my $enc_msg = Device::Gsm::Pdu::encode_text7($text);
>
>тут конвертируется видимо в 7битку
>
>итого текст должен быть в iso8859,но т.к. iso8859 это еще не русские
>буквы то надо искать
>что нить типа Device::Gsm::Charset::ВАША_КОДИРОВКА_to_gsm0338($text);У меня koi8r
>>что нить типа Device::Gsm::Charset::ВАША_КОДИРОВКА_to_gsm0338($text);Пробовал закоментить строку перекодирования в модуле и сам кодировал
Encode::from_to($content, 'koi8r', 'gsm0338');
выползают "????"
Девайс с русскими буквами вообще работает? Шрифты?>У меня koi8r
а принимает 8859
т.е. надо
Encode::from_to($content, 'koi8r', 'iso8859');
но т.к. в iso8859 будут крякозябы.. хм.. надо читать доки на девайс..хм.. пока ничего не могу посоветовать..
ух ты, модулёг.. ыы.
Помницо трахался с pdu и 7ми ботной кодировкой. А тут все из коробки.
Радуйтесь
>[оверквотинг удален]
>
>>У меня koi8r
>
>а принимает 8859
>т.е. надо
>Encode::from_to($content, 'koi8r', 'iso8859');
>но т.к. в iso8859 будут крякозябы.. хм.. надо читать доки на девайс..
>
>
>хм.. пока ничего не могу посоветовать..Да девайс с русскими работает, принимает смс нормально
$koi8_str = $koi8->to8(utf8($text)->utf16);
таким образом перекодирую sms в koi8>>Encode::from_to($content, 'koi8r', 'iso8859');
Может должна быть iso8859-5 это вроде русская как я понимаю,
а iso8859-1 это обычная latin1
>>>Encode::from_to($content, 'koi8r', 'iso8859');
> Может должна быть iso8859-5 это вроде русская как я понимаю,
> а iso8859-1 это обычная latin1Бьюсь с аналгичной проблемой.
Локаль UTF8.
Никакие выкрутасы с перекодировками из вышеописанных не помогают.Кто как решил проблему?
неужели никто так и не решил проблему??????
> неужели никто так и не решил проблему??????Да я забросил, но помню что вроде модули поддержку влючили в режим PDU
Решил проблему программой smstools.
Все отлично отправляет и по русски))))
> Решил проблему программой smstools.
> Все отлично отправляет и по русски))))как в smstools добился русских смс?
>> Решил проблему программой smstools.
>> Все отлично отправляет и по русски))))
> как в smstools добился русских смс?все заработало само после установки
отсылаю смс "sendsms tel 'text'", кодировка Юникод
Если еще актуально - получилось. После легкой рихтовки Gsm.pm
Исправленный можно взять здесь: http://webfile.ru/5434167
> Если еще актуально - получилось. После легкой рихтовки Gsm.pm
> Исправленный можно взять здесь: http://webfile.ru/5434167Строка, передаваемая модему, должна быть уже в правильной кодировке:
use Encode qw/encode decode from_to/;
...
my $sms_text = 'Ваш баланс пополнен на 1000 руб.';
from_to($txt, "CP1251", "UCS2");
...
my $sent = $gsm->send_sms(
recipient => '+7920xxxxxxx',
class => 'flash',
content => $sms_text,
mode => 'pdu'
);