powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Русский текст в ошибках через IBM Informix ODBC
14 сообщений из 14, страница 1 из 1
Русский текст в ошибках через IBM Informix ODBC
    #33511981
Julian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема русификации при обращении к БД Informix через ODBC от IBM из Client SDK:
данные получаю по-русски, а сообщения об ошибках - неправильно перекодированные,
не читаемые. Такое впечатление, что перекодировка выполняется дважды и глючит.
Например, вместо слова "Тестовое" вижу "oAOOI?IA" (уже ошибка в 3-4 буквах).

Сервер БД:
IDS 9.21 UC3 в Linux, DB_LOCALE=ru_RU.57382
или
Informix SE 7.25 в Win XP, DB_LOCALE=ru_RU.866
Работа с обоими одинакова.

Client SDK - 2.80 или свежий 2.90 TC4 - картина та же.

Приложения в Win XP - WinSQL 4.1 или задача на Delphi, CLIENT_LOCALE=ru_RU.1251,
соединение из обоих через ODBC DSN или
через Connection String - все без разницы.

Но если использовать при тех же настройках старый Client SDK 2.5,
то сообщения об ошибках вижу по-русски.

В чем может быть дело?
...
Рейтинг: 0 / 0
Русский текст в ошибках через IBM Informix ODBC
    #33514658
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для того, чтобы видеть сообщение об ошибках по русски они, как минимум, должны быть у клиента и в нужной кодировке. Вы не указали все значения локалей, особенно те, которые влияют на сообщения SERVER_LOCALE и DBLANG.
Предположим, что они стоят у вас в том же значении, что и CLIENT_LOCALE = ru_RU.1251
Значит в папке MSG вашего клиента должен быть подкаталог ru_ru и уже в нем подкаталог 04E3 с сообщениями в нужной кодировке (для кодировки Win 1251) или E026 (КОИ-8 = 57382). По умолчанию этого не будет и локализация сообщений и интерфейса производится специальным пакетом INFORMIX INTERNATIONAL LANGUAGE SUPPLEMENT (ILS), который даже не входил в стандартную поставку.
А вообще то, крайне редко вижу потребность в переводе сообщений об ошибках для грамотного админа и даже вредность (из-за кривизны перевода), так же как и русификацию интерфейсов утилит Informix.
Установите значения SERVER_LOCALE=EN_US.CP1252 и DBLANG=EN_US.CP1252
и "не парьте себе мозги" :)
О локализации подробнее можно почитать здесь
http://www.sql.ru/faq/faq.aspx?id=549
...
Рейтинг: 0 / 0
Русский текст в ошибках через IBM Informix ODBC
    #33514944
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я подумал что речь про сообщения в эксепшинах, например из триггеров. И проблема кроется мне кажется в юникодах используемых в новых odbc дровах, я бы попробовал обновить mdac для начала.
...
Рейтинг: 0 / 0
Русский текст в ошибках через IBM Informix ODBC
    #33517587
Julian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Сожалею, что дал повод говорить о русификации стандартных сообщений.
Конечно, это ни к чему.
Да, нужно видеть сообщения по-русски из хранимой процедуры в след. случае:
let txt_var = 'русский';
RAISE EXCEPTION -746, 0, txt_var
Процедура регистрирует логические ошибки, вызывается и сама, и в триггерах
(txt_var она запиисывает еще в таблицу-журнал).
При использовании Client SDK 2.5 пользователь в Win XP видит сообщение об ошибке
по-русски. При 2.80 и выше - белиберду.
Все настройки и в SetNet32, и в ODBC DSN, а также пути у клиента, повторюсь, те же.
Причем
select txt_var from table( set{1} )
выдает нормальный 'русский' и с 2.5, и с 2.80.

Разве txt_var в случае exception и в случае select
перекодируется разными механизмами в 2.80?

Что касается SERVER_LOCALE, то согласно "Informix Guide to SQL. Reference.
Informix Dynamic Server 2000. Version 9.2" такой переменной нет.
В SetNet32 ее тоже нет.
А в DBLANG нужно заносить не локаль, а путь к файлам с откомпилированными
сообщениями *.iem, если он отличается от $INFORMIXDIR\msg. Тоже не то.

MDAC? Возможно. Попробую заменить...
...
Рейтинг: 0 / 0
Русский текст в ошибках через IBM Informix ODBC
    #33518751
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulianЧто касается SERVER_LOCALE, то согласно "Informix Guide to SQL. Reference. Informix Dynamic Server 2000. Version 9.2" такой переменной нет.
В SetNet32 ее тоже нет.
Боюсь, что не там искали. "Guide to GLS Functionality" описывает все переменные , относящиеся к локалям. Надеюсь, что такой документ есть для 9.2, так как GLS появился уже давно (пришел на смену NLS еще лет 9-10 назад).
"The SERVER_LOCALE environment variable specifies the server locale, which
the database server uses to perform read and write operations that involve
operating-system files on the server computer. For more information, see
“The Server Locale” on page 1-28 and “GLS Support by Informix Database
Servers” on page 4-4"

JulianА в DBLANG нужно заносить не локаль, а путь к файлам с откомпилированными сообщениями *.iem, если он отличается от $INFORMIXDIR\msg. Тоже не то.
Тоже не совсем верно. Эта переменная м.б. трех видов:
relative_path - Subdirectory of the Informix installation directory (which INFORMIXDIR specifies);
full_path - Full pathname of the directory that contains the compiled message files;
locale_name - Name of a GLS locale that has the format lg_tr.code_set, where lg is a two-character name that represents the language for a specific locale, tr is a two-character name that represents the cultural conventions, and code_set is the name of the code set that the locale supports.
Обращаю винмание, что
If DBLANG is not set: the msg subdirectory for the locale in $INFORMIXDIR/msg/lg_tr/code_set on UNIX systems or %INFORMIXDIR%\msg\lg_tr\code_set on Windows NT, where lg and tr are the language and territory, respectively, from the locale that is associated with the Informix product, and code_set is the condensed name of the code set that the locale supports:
- For Informix client products: lg and tr are from the client locale (from CLIENT_LOCALE, if it is set)
- For Informix database server products: lg and tr are from the
server locale (from SERVER_LOCALE, if it is set)

В любом случае, боюсь, что к вашей проблеме это не относится.
Похоже, Денис Прав, связывая это с поддержкой юникодов в более поздних версиях клиента.
...
Рейтинг: 0 / 0
Русский текст в ошибках через IBM Informix ODBC
    #33566737
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже баг в odbc и начался он или 2.5 или 2.7
...
Рейтинг: 0 / 0
Русский текст в ошибках через IBM Informix ODBC
    #33569210
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению в чтобы зарегистрировать pmr по odbc нужен саппорт на клиента, саппорта на сервер не достаточно. Может кто-нибудь из приближенных (напр. nkulikov) зарегистрирует такой pmr?
...
Рейтинг: 0 / 0
Русский текст в ошибках через IBM Informix ODBC
    #33572065
nkulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пиши на Nikolay_Kulikov@ru.ibm.com откроем PMR
...
Рейтинг: 0 / 0
Русский текст в ошибках через IBM Informix ODBC
    #33575081
Julian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Денис, я так понял, что ты проверил у себя subj?
На какой версии сервера БД?

Хотя я уверен, что дело в драйверах клиента.
MDAC, кстати, ни при чем, заменил свежий 2.81.1117.0 на свежайший 2.81.1117.6
(новее не видел, по крайней мере. В нем, кстати, msdasql.dll все равно имеет
версию 2.81.1117.0, а другие dll - повыше) - не помогло.

Не имея техподдержки, задал этот же вопрос в www.iiug.org/forums/classics/ - тихо.
Спросил в informix-list@iiug.org - не совсем тихо, но без результата пока. Кратко проблема сформулирована так (лучше, чем в начале темы):

I have a problem: client program doesn't see national symbols
in error message from SP commands:
LET msgtxt = 'russian phrase';
RAISE EXCEPTION -746, 0, msgtxt;

But following commands works nice:
SELECT russian_text_field FROM Any_Table;
UPDATE Any_Table SET russian_text_field = 'any national text';

Clients works on Windows XP SP2 with MDAC v 2.81.1117.0.
Error message trouble arise when I use IBM Informix Client SDK 2.8 or 2.9,
but disappears with IBM Informix Client SDK 2.5.
All environment settings are permanent!
Situation is identical with both our servers
IDS 9.21.UC3 on Linux and Informix SE 7.25 on Windows.
...
Рейтинг: 0 / 0
Русский текст в ошибках через IBM Informix ODBC
    #33575112
Julian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2vasilis

Спасибо (не прошло и месяца :)

По GLS почитал все книжки заново. В общем да, SERVER_LOCALE и DBLANG имеют место быть именно такими (назначение и использование), но к моей проблеме отношения не имеют. SERVER_LOCALE вообще не касается клиентских приложений, а влияет на кодировку записей в служебные фалы сервером БД на сервере же (диаг, журналы).

А юникоды при чем могут быть? Разве только в том смысле, что при их реализации авторы ODBC драйвера испортили перекодировку сообщений от RAISE EXCEPTION...
...
Рейтинг: 0 / 0
Русский текст в ошибках через IBM Informix ODBC
    #33575623
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulianДенис, я так понял, что ты проверил у себя subj?
На какой версии сервера БД?

...Я столкнулся с этой проблемой в odbc два года назад, но забил на нее. Сейчас проверил, да все тоже самое, и в .net data провайдере тоже самое, индусов мочить.
...
Рейтинг: 0 / 0
Русский текст в ошибках через IBM Informix ODBC
    #33575668
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulianА юникоды при чем могут быть? Разве только в том смысле, что при их реализации авторы ODBC драйвера испортили перекодировку сообщений от RAISE EXCEPTION...они не только RAISE EXCEPTION испортили, стандартные сообщения тоже перекодированные приходят
...
Рейтинг: 0 / 0
Русский текст в ошибках через IBM Informix ODBC
    #33575924
Nikolay Kulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так открывать PMR или нет??? Важно это вам или нет???
...
Рейтинг: 0 / 0
Русский текст в ошибках через IBM Informix ODBC
    #33576086
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nikolay KulikovТак открывать PMR или нет??? Важно это вам или нет???Да, откройте пожалуйста. Почтой вам написали вчера и сегодня.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Русский текст в ошибках через IBM Informix ODBC
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]