Forum Webscript.Ru
Программирование => Perl => Тема начата: Alanius от 23 Ноября 2004, 07:51:59
-
Здравствуйте!
Столкнулся с проблемой, которую никак не могу обойти.
Требуется получить данные, которые хранятся в MS SQL под виндой в perl-скрипт на linux rh9. Для этого используется DBD::ODBC в связке с FreeTDS.
Сам коннект и выполненение запросов отрабатываются замечательно, но возникает проблема при получении данных, содержащих русские символы: все они отображаются вопросиками.
Знаю, что проблема в кодировке, но решить ее не могу никак:
ни какое прописывание char set в конфиге FreeTDS, ни измывательства над локалью не помогают.
На onennet\'е встретил статью про такие же мытарства с PHP, но описанное там решение мне тоже не подходит в силу специфики самого PHP...
Помогите, кто знает как с этим бороться.
Заранее спасибо,
Алексей.
-
1) в какой кодировке данные в базе?
2) покажи /etc/freetds/locales.conf
3) что ставил в локали? уверен что такая локаль присутствует на красной шапке?
-
1) В MSSQL все данные в cp1251
2) Сейчас стоит
[default]
date format = %b %d %Y %I:%M%p
language = us_english
char set = cp1251
[en_US]
date format = %b %d %Y %I:%M%p
language = us_english
char set = iso_1
[es_ES]
date format = %b %d %Y %I:%M%p
language = spanish
char set = iso_1
[ru_RU]
date format = %b %d %Y %I:%M%p
language = russian
char set = cp1251
Ставил char set: utf-8, koi8-r, cp1251
3) В локали ставил:
LANG=ru_RU.KOI8-R, ru_RU.CP1251, ru_RU.UTF-8, ru_RU.ISO-8859-(1-16).
Ничего не помогло.
-
Ты случайно не из полей nchar,nvarchar,ntext считываешь?
-
из полей varchar
-
Тогда может попробовать перекодировать на клиенте из 1251 в KOI8 и другие
-
Насколько я помню такая проблема у меня была с FreeTDS v0.60 (у них на сайте вроде даже написано было). Обновил тогда до v0.61 - проблема исчезла... сделал и забыл.
Работает связка FreeBSD + DBD::Sybase + FreeTDS v0.61.
PS: Да, у меня еще выход перекодируется из win в koi.