The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"MS Access MDB + unixODBC + perl. Проблемы с русским."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"MS Access MDB + unixODBC + perl. Проблемы с русским."  
Сообщение от nx90009 on 17-Мрт-09, 00:20 
Привет всем.
Есть база 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. Может кто подскажет как быть. Весь гугл облазил, не пойму, такое ощущение, что Аксесовские базы и альтернативные кодировки - вещи несовместимая..
Заранее спасибо! )

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "MS Access MDB + unixODBC + perl. Проблемы с русским."  
Сообщение от pavel_simple (ok) on 17-Мрт-09, 07:01 
>[оверквотинг удален]
>???????
>?????????
>
>Скрипт запускался под линукс. настройка локали(и терминала) UTF-8. пробовал менять на CP-1251.
>Нет эффекта.
>При любом раскладе вместо русских символов - вопросики.
>Я так понимаю, проблема с настройкой самого unixODBC. Может кто подскажет как
>быть. Весь гугл облазил, не пойму, такое ощущение, что Аксесовские базы
>и альтернативные кодировки - вещи несовместимая..
>Заранее спасибо! )

$perl test_query_ODBC.pl|head | iconv -t utf-8
так нормально отображает?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "MS Access MDB + unixODBC + perl. Проблемы с русским."  
Сообщение от nx90009 on 17-Мрт-09, 09:47 
>[оверквотинг удален]
>>Скрипт запускался под линукс. настройка локали(и терминала) UTF-8. пробовал менять на CP-1251.
>>Нет эффекта.
>>При любом раскладе вместо русских символов - вопросики.
>>Я так понимаю, проблема с настройкой самого unixODBC. Может кто подскажет как
>>быть. Весь гугл облазил, не пойму, такое ощущение, что Аксесовские базы
>>и альтернативные кодировки - вещи несовместимая..
>>Заранее спасибо! )
>
>$perl test_query_ODBC.pl|head | iconv -t utf-8
>так нормально отображает?

нет.. я всю базу хотел сначала через iconv прогнать) конечно ничего не вышло.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "MS Access MDB + unixODBC + perl. Проблемы с русским."  
Сообщение от pavel_simple (ok) on 17-Мрт-09, 09:51 
>[оверквотинг удален]
>>>Я так понимаю, проблема с настройкой самого unixODBC. Может кто подскажет как
>>>быть. Весь гугл облазил, не пойму, такое ощущение, что Аксесовские базы
>>>и альтернативные кодировки - вещи несовместимая..
>>>Заранее спасибо! )
>>
>>$perl test_query_ODBC.pl|head | iconv -t utf-8
>>так нормально отображает?
>
>нет.. я всю базу хотел сначала через iconv прогнать) конечно ничего не
>вышло.

а всё-же зачем ставить charset в cp1251 если он таки utf-8 -- перекодировкой ведь сам драйвер odbc должен заниматься.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "MS Access MDB + unixODBC + perl. Проблемы с русским."  
Сообщение от nx90009 on 17-Мрт-09, 13:23 
>[оверквотинг удален]
>>>>Заранее спасибо! )
>>>
>>>$perl test_query_ODBC.pl|head | iconv -t utf-8
>>>так нормально отображает?
>>
>>нет.. я всю базу хотел сначала через iconv прогнать) конечно ничего не
>>вышло.
>
>а всё-же зачем ставить charset в cp1251 если он таки utf-8 --
>перекодировкой ведь сам драйвер odbc должен заниматься.

Да. забыл написать - эти строчки "Charset" и "Servercharset" я уже потом поставил. они не влияют на работу. Сначала я ставил только "Servercharset" - не помогло. Затем на всякий случай просто "Charset". Такое ощущение что unixODBC не понимает эти строчки..

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "MS Access MDB + unixODBC + perl. Проблемы с русским."  
Сообщение от pavel_simple (ok) on 17-Мрт-09, 14:08 
>[оверквотинг удален]
>>>нет.. я всю базу хотел сначала через iconv прогнать) конечно ничего не
>>>вышло.
>>
>>а всё-же зачем ставить charset в cp1251 если он таки utf-8 --
>>перекодировкой ведь сам драйвер odbc должен заниматься.
>
>Да. забыл написать - эти строчки "Charset" и "Servercharset" я уже потом
>поставил. они не влияют на работу. Сначала я ставил только "Servercharset"
>- не помогло. Затем на всякий случай просто "Charset". Такое ощущение
>что unixODBC не понимает эти строчки..

http://www.easysoft.com/products/data_access/odbc_odbc_bridg...

может в данном случае поможет

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "MS Access MDB + unixODBC + perl. Проблемы с русским."  
Сообщение от nx90009 on 17-Мрт-09, 14:21 
>[оверквотинг удален]
>>>перекодировкой ведь сам драйвер odbc должен заниматься.
>>
>>Да. забыл написать - эти строчки "Charset" и "Servercharset" я уже потом
>>поставил. они не влияют на работу. Сначала я ставил только "Servercharset"
>>- не помогло. Затем на всякий случай просто "Charset". Такое ощущение
>>что unixODBC не понимает эти строчки..
>
>http://www.easysoft.com/products/data_access/odbc_odbc_bridg...
>
>может в данном случае поможет

похоже это платная штука.. шило на мыло выйдет, проще на аксесе оставить тогда уж. хотелось бы открытыми, ну или хотя бы бесплатными ср-вами это решить.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "MS Access MDB + unixODBC + perl. Проблемы с русским."  
Сообщение от pavel_simple (ok) on 17-Мрт-09, 14:40 
>[оверквотинг удален]
>>>- не помогло. Затем на всякий случай просто "Charset". Такое ощущение
>>>что unixODBC не понимает эти строчки..
>>
>>http://www.easysoft.com/products/data_access/odbc_odbc_bridg...
>>
>>может в данном случае поможет
>
>похоже это платная штука.. шило на мыло выйдет, проще на аксесе оставить
>тогда уж. хотелось бы открытыми, ну или хотя бы бесплатными ср-вами
>это решить.

дык ведь тебе только на время переезда? -- а оно ^^ -- да trial

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "MS Access MDB + unixODBC + perl. Проблемы с русским."  
Сообщение от nx90009 on 17-Мрт-09, 14:45 
>[оверквотинг удален]
>>>http://www.easysoft.com/products/data_access/odbc_odbc_bridg...
>>>
>>>может в данном случае поможет
>>
>>похоже это платная штука.. шило на мыло выйдет, проще на аксесе оставить
>>тогда уж. хотелось бы открытыми, ну или хотя бы бесплатными ср-вами
>>это решить.
>
>дык ведь тебе только на время переезда? -- а оно ^^ --
>да trial

ок) попробую.. а у unixODBC всё плохо с кодировками, выходит?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "MS Access MDB + unixODBC + perl. Проблемы с русским."  
Сообщение от pavel_simple (ok) on 17-Мрт-09, 14:57 
>[оверквотинг удален]
>>>>может в данном случае поможет
>>>
>>>похоже это платная штука.. шило на мыло выйдет, проще на аксесе оставить
>>>тогда уж. хотелось бы открытыми, ну или хотя бы бесплатными ср-вами
>>>это решить.
>>
>>дык ведь тебе только на время переезда? -- а оно ^^ --
>>да trial
>
>ок) попробую.. а у unixODBC всё плохо с кодировками, выходит?

если честно -- unixodbc особо никому не нужен (ИМХО) -- поэтому находится в таком состоянии.

а проблема с кодировками... я думаю что её как таковой нет, но разбираться если честно нет желания.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "MS Access MDB + unixODBC + perl. Проблемы с русским."  
Сообщение от nx90009 on 17-Мрт-09, 09:52 
>[оверквотинг удален]
>>>Я так понимаю, проблема с настройкой самого unixODBC. Может кто подскажет как
>>>быть. Весь гугл облазил, не пойму, такое ощущение, что Аксесовские базы
>>>и альтернативные кодировки - вещи несовместимая..
>>>Заранее спасибо! )
>>
>>$perl test_query_ODBC.pl|head | iconv -t utf-8
>>так нормально отображает?
>
>нет.. я всю базу хотел сначала через iconv прогнать) конечно ничего не
>вышло.

в смысле, что при любом раскладе вопросики выдаёт.
т.е. ODBC как бы изначально не понимает кирилицу. И дальше уже что не делай на выходе всегда вопросики.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "MS Access MDB + unixODBC + perl. Проблемы с русским."  
Сообщение от 0dmin on 17-Мрт-09, 21:38 
>Привет всем.
>Есть база mdb(M$ Access). Есть простенький интерфейс к ней(формы, отчеты), написанный ср-вами
>самого Access'а. Было принято решение уйти с Access'а на PostgreSQL(дабы отвязаться
>от пакета M$ Office). Хочется сделать такой переход плавным. Т.е. юзеры
>будут продолжать работать через интерфейс Аксеса, а я тем временем буду
>писать веб-интерфейс на Perl + DBI.

Вот до этого места всё было чинно-благородно - прям бальзам на душу 0dmin'у :)
Но далее пошёл тяжелый бред. Совсем в смысле не туда :(

>Подключаюсь к базе средствами DBI + ODBC.В общем-то работает.. кроме русского. кодировка CP1251 есесно.
>Имею:
># more /etc/unixODBC/odbc.ini

И далее всё ушло в обсуждение достоинств "никому не упершихся юник-одибисы"(С)pavel_simple

Неправильно это! Запомни: ___первейшая задача___ любого админа при встрече с M$ Access - срочно забрать у него данные и доверить хранение\обработку настоящему серверу!
То есть вместо вышеописанных страданий твои страдания должны быть:
1) Забрать данные из акцеса. Хоть в csv думпить - но НАДА!
2) Скормит их слонику, желательно с перекодировкой.
3) Настроить ODBC провайдера к слонику.
4) Жёстко искромсать оригинальный mdb-шник (КОПИЮ!) на предмет юзания табличек через пп №3

Работает? Нет - ищешь где грабли и по новой.
А если заработало - не торопясь начинаешь перетягивать функционал в веб. И коннектишься к слонику а не к этому ... датабазу :)

Такой паттерн был успешно применен мной в одной широко известной 3-х буквенной красно-белой^W красно-желтой буржуйской компании в 1999. Только вместо слоника был Informix IDS 9 ... Причем клиенты остались акцессные. Картинки\диаграмки оно рисует хорошо да :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]


  Закладки на сайте
  Проследить за страницей
Created 1996-2019 by Maxim Chirkov  
ДобавитьПоддержатьВебмастеруГИД  
Hosting by Ihor