![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| patcionov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 17.5.2010 Репутация: нет Всего: нет |
Здравствуйте! ситуация такая. Есть програмное обеспечение которое работает с базой данных. В программе есть обработчик который может принимать письма и вставлять тело письма в поле базы данных. Само ПО довольно корявое (ну уж какое есть - не я его выбирал) поэтому принимает нормально письма только в одной кодировке и только в формате plain text. Компания, которая нам внедряла этот софт написал скрипт который меняет кодировку и отрезает все ненужное от письма - вот сам скрипт :
#!/usr/bin/perl -w use DBI; use CGI qw(:all); use CGI qw/:standard/; use Encode; $str1=$ARGV[0]; my $sql="select heat.dbo.CallLog.CallDesc from heat.dbo.CallLog where callID= ".$str1.""; #my $output1=encode('cp1251',decode('koi8-r',$sth)); my $output1=encode('utf-8',decode('cp1251','')); my $dbh = DBI->connect('DBI:ODBC:Driver=SQL Server;database=HEAT;server=192.168.0.131', 'heat', 'heat', { RaiseError => 1, AutoCommit => 1 }); $dbh->{LongReadLen}= 16384; $dbh->{LongTruncOk}= 1; my $sth = $dbh->prepare($sql); $sth->execute; my $message; $sth->bind_columns( undef, \$message); while( $sth->fetchrow_hashref( )){ $output1=$message."\,"; }; $output1=~ s/<([^>]|\n)*>//g; $output1=~ s/\!DOCTYPE HTML PUBLIC "\-\/\/W3C\/\/DTD HTML 3.2\/\/EN">//gm; $output1=~ s/Otklonit\d+.//gm; $output1=~ s/\ \;//gm; $output1=~ s/^\s+//gm; my $output2=encode('cp1251',decode('koi8-r',$output1)); $sth->finish(); print $str1, "\n"; ###################################################### $sql1="update heat.dbo.CallLog set heat.dbo.CallLog.CallDesc= '".$output2."' where callID= ".$str1.""; my $dbh1 = DBI->connect('DBI:ODBC:Driver=SQL Server;database=HEAT;server=192.168.0.131', 'heat', 'heat', { RaiseError => 1, AutoCommit => 1 }); my $sth1 = $dbh1->prepare($sql1); $sth1->execute; $sth1->finish(); ###################################################### $dbh->disconnect; Сам я не программист но приблизительно вижу что срипт лезет в поле базы данных , в которое сохранился текст письма, меняет кодировку и отрезает ненужные части (теги от формата HTML) . Все работало и вдруг я обнаружил что если в тексте письма встречается апостроф то скрипт не отрабатывает. Можете ли подсказать способ решить данную проблему? |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
переписать этот ужасный скрипт.
пс. не подскажете, что за фирма вам его впарила? |
|||
|
||||
| OutlawZ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 269 Регистрация: 19.10.2007 Репутация: нет Всего: нет |
Да скорей фирма просто в сети нашла кого нить чела которому лень было что то писать вот и слепил что есть.
-------------------- ![]() ![]() |
|||
|
||||
| krypt3r |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 9.6.2009 Репутация: 2 Всего: 16 |
Перед запросом UPDATE добавьте экранирование переменой $output2
|
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |