Автор Тема: Perl и MSSQL - проблема с русскими буковками  (Прочитано 5706 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Alanius

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://webworks.ru
Здравствуйте!
Столкнулся с проблемой, которую никак не могу обойти.
Требуется получить данные, которые хранятся в MS SQL под виндой в perl-скрипт на linux rh9. Для этого используется DBD::ODBC в связке с FreeTDS.
Сам коннект и выполненение запросов отрабатываются замечательно, но возникает проблема при получении данных, содержащих русские символы: все они отображаются вопросиками.
Знаю, что проблема в кодировке, но решить ее не могу никак:
ни какое прописывание char set в конфиге FreeTDS, ни измывательства над локалью не помогают.
На onennet\'е встретил статью про такие же мытарства с PHP, но описанное там решение мне тоже не подходит в силу специфики самого PHP...

Помогите, кто знает как с этим бороться.

Заранее спасибо,
Алексей.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Perl и MSSQL - проблема с русскими буковками
« Ответ #1 : 23 Ноября 2004, 12:16:49 »
1) в какой кодировке данные в базе?
2) покажи /etc/freetds/locales.conf
3) что ставил в локали? уверен что такая локаль присутствует на красной шапке?
The documentations is your friend

Оффлайн Alanius

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://webworks.ru
Perl и MSSQL - проблема с русскими буковками
« Ответ #2 : 23 Ноября 2004, 21:45:08 »
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).

Ничего не помогло.
« Последнее редактирование: 23 Ноября 2004, 21:56:37 от Alanius »

Оффлайн BonJorno

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 52
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Perl и MSSQL - проблема с русскими буковками
« Ответ #3 : 25 Ноября 2004, 07:05:40 »
Ты случайно не из полей nchar,nvarchar,ntext считываешь?

Оффлайн Alanius

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://webworks.ru
Perl и MSSQL - проблема с русскими буковками
« Ответ #4 : 25 Ноября 2004, 22:24:04 »
из полей varchar

Оффлайн BonJorno

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 52
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Perl и MSSQL - проблема с русскими буковками
« Ответ #5 : 26 Ноября 2004, 06:36:53 »
Тогда может попробовать перекодировать на клиенте из 1251 в KOI8 и другие

Оффлайн Wyclef

  • hello_worlder
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thug.narod.ru
Perl и MSSQL - проблема с русскими буковками
« Ответ #6 : 26 Ноября 2004, 15:07:35 »
Насколько я помню такая проблема у меня была с FreeTDS v0.60 (у них на сайте вроде даже написано было). Обновил тогда до v0.61 - проблема исчезла... сделал и забыл.

Работает связка FreeBSD + DBD::Sybase + FreeTDS v0.61.

PS: Да, у меня еще выход перекодируется из win в koi.
It\'s nice to be important, but it\'s more important to be nice!

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28