Perl + mssql (кодировка символов) [SOLVED]
joper 15 июня, 2009 - 18:36
Всё, нормально подключается и запросы выполняются. Только вот как добится, чтобы при выводе результатов корректно отображались русские буквы.
Делал по http://www.opennet.ru/base/dev/perl_mssql.txt.html
и по http://www.t-cards.ru/?target=messages&action=view&t=0000000343001
Сейчас вместо них квадратики. Локаль настроенна.
собсно скрипт.
use DBI;
my @data;
$dbh=DBI->connect('DBI:Sybase:server=192.168.77.64','test_user','****') or
die "Couldn't connect to database: " . DBI->errstr;
$dbh->do("set quoted_identifier on");
$dbh->do("use \"3305\"");
my $sth=$dbh->prepare('
SELECT ID,attr_GroupHead from dbo.Tovar where attr_GroupHead!=\'\' and ID<\'500\'
');
$rv=$sth->execute();
if (!defined $rv) {
print "При выполнении запроса '$query' возникла ошибка: " . $dbh->errstr . "\n";
exit(0);
}
while (@array = $sth->fetchrow_array()) {
foreach $i (@array) {
print "$i\t|";
}
print "\n";
}
$sth->finish();
$dbh->disconnect();
»
- Для комментирования войдите или зарегистрируйтесь

Разобрался, iconv -
Разобрался, iconv - рулит!
Заменяем:
while (@array = $sth->fetchrow_array()) { foreach $i (@array) { print "$i\t|"; } print "\n";на:
while (my @array = $sth->fetchrow_array()) { foreach my $i (@array) { my $iconv = Text::Iconv->new('windows-1251','utf-8'); $i=$iconv->convert($i); print "$i\t|"; }