Привет всем.
Есть база mdb(M$ Access). Есть простенький интерфейс к ней(формы, отчеты), написанный ср-вами самого Access'а. Было принято решение уйти с Access'а на PostgreSQL(дабы отвязаться от пакета M$ Office). Хочется сделать такой переход плавным. Т.е. юзеры будут продолжать работать через интерфейс Аксеса, а я тем временем буду писать веб-интерфейс на Perl + DBI.
Подключаюсь к базе средствами DBI + ODBC.В общем-то работает.. кроме русского. кодировка CP1251 есесно.
Имею:
# more /etc/unixODBC/odbc.ini
[mdb_test_01]
Description = Microsoft Access Database
Driver = MDBToolsODBC
Database = /home/lss/mdb/mdb_test_01.mdb
Servername = localhost
UserName =
Password =
port = 5432
Servercharset = CP1251 # скопипастил откуда-то из гугла. не влияет на работу.
Charset = CP1251 ## more /etc/unixODBC/odbcinst.ini
[MDBToolsODBC]
Description = MDB Tools ODBC drivers
Driver = /usr/lib/libmdbodbc.so.0
Setup =
FileUsage = 1
CPTimeout =
CPReuse =
Servercharset = CP1251 # сюда тоже добавил. тоже без результата.
Charset = CP1251
UsageCount = 4
$ more test_query_ODBC.pl
#!/usr/bin/perl
use strict;
use DBI;
my $DSN = 'mdb_test_01';
my $dbh = DBI->connect("dbi:ODBC:$DSN", '','') or die "$DBI::errstr\n";
my $sql = qq{ SELECT gen,mname FROM contacts };
my $sth = $dbh->prepare( $sql );
$sth->execute();
my( $gen, $mname);
$sth->bind_columns( undef, \$gen, \$mname );
while( $sth->fetch() ) {
print "$mname\n";
}
$sth->finish();
$dbh->disconnect();
Пробуем запустить:
$perl test_query_ODBC.pl|head
???????
????
????????
????????
?????
?????????
???????
???????
?????????
Скрипт запускался под линукс. настройка локали(и терминала) UTF-8. пробовал менять на CP-1251. Нет эффекта.
При любом раскладе вместо русских символов - вопросики.
Я так понимаю, проблема с настройкой самого unixODBC. Может кто подскажет как быть. Весь гугл облазил, не пойму, такое ощущение, что Аксесовские базы и альтернативные кодировки - вещи несовместимая..
Заранее спасибо! )