powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / проблема с кодировкой для win client - server 9.1 DB2 for linux
13 сообщений из 13, страница 1 из 1
проблема с кодировкой для win client - server 9.1 DB2 for linux
    #34351329
Alexander Mushnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi all.
- есть удаленный сервер DB2 под Linux ver.9.1;
- установлен клиент под WinXP Pro SP1 Ru:
============================================================
About DB2 Administration Tools Environment
============================================================
DB2 administration tools level:
Product identifier SQL09010
Level identifier 02010107
Level DB2 v9.1.0.356
Build level s060629
PTF NT32
============================================================
Java development kit (JDK):
Level IBM Corporation 1.5.0
============================================================
- база была создана с CODEPAGE=1208, CODESET=UTF-8;
- таблицы были импортированы из sybase ASE, штатными средствами (в ASE база тоже в UTF-8);
ТЕПЕРЬ ПРОБЛЕМА:
под Linux, в консоли данные выгребаются и отображаются правильно,
а под XP - проблема с кодировкой! там где должен быть один символ - видно 2, один из них как правило прямоугольник.
Переменные окружения ( при помощи db2set ) выставлены:
DB2INSTPROF=C:\IBM\SQLLIB
DB2CODEPAGE=1208
перерыл все возможные настройки - но нигде не нашел больше упоминаний об CharSet.
где косяк? помогите!

С уважением, Александр.
...
Рейтинг: 0 / 0
проблема с кодировкой для win client - server 9.1 DB2 for linux
    #34354334
тлгдшлщм
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это проблема на стороне db2cli.ini

Попробуй в db2cli.ini поставить

DISABLEUNICODE=1
...
Рейтинг: 0 / 0
проблема с кодировкой для win client - server 9.1 DB2 for linux
    #34354458
Alexander Mushnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
неужели никто не сталкивался с подобной ситуацией?
нарисовал клиента под win который коннектится к базе по tcp/ip через OLE provider (IBMDADB2).
записи которые сохраняются в базе через эту софтинку (в кодировке UTF-8) без проблем читаются ею же. Эта же запись в "Control Central" - выглядит по прежнему кракозяблами...;-(
для некоторых других OLE DB провайдеров в строке коннекта (например sybase asa) можно было задать параметр: charset=utf8. а вот для IBM DB2 я подобного ни где не смог найти...

с уважением, Александр.
...
Рейтинг: 0 / 0
проблема с кодировкой для win client - server 9.1 DB2 for linux
    #34354519
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте так.

db2set DB2CODEPAGE=1251
...
Рейтинг: 0 / 0
проблема с кодировкой для win client - server 9.1 DB2 for linux
    #34354574
Alexander Mushnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тлгдшлщмЭто проблема на стороне db2cli.ini

Попробуй в db2cli.ini поставить

DISABLEUNICODE=1

в db2cli.ini не нашел ничего что относилось бы к моему connection...я коннекчусь через TCP/IP.
попробовал добавлять эту строчку в разные секции, и вне секций - не помогло...
...
Рейтинг: 0 / 0
проблема с кодировкой для win client - server 9.1 DB2 for linux
    #34354611
Alexander Mushnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gardenmanПопробуйте так.

db2set DB2CODEPAGE=1251
пробовал играться с этим параметром по всякому, результат тот-же ... что интересно вид кракозяблов не изменялся при этом.
когда попробовал DB2CODEPAGE=1200 (это UTF-16) получил при запуске централа сообщение об ошибке - "jdbc: ошибка размещения хандла...", и вероятно, код ошибки: CLI0647E.
...
Рейтинг: 0 / 0
проблема с кодировкой для win client - server 9.1 DB2 for linux
    #34354789
тлгдшлщм
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стоп у тебя где кракозябры?
...
Рейтинг: 0 / 0
проблема с кодировкой для win client - server 9.1 DB2 for linux
    #34354835
Alexander Mushnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тлгдшлщмСтоп у тебя где кракозябры?

в Control Center View: C:\IBM\SQLLIB\BIN\db2cc.bat
запускаю его, в дереве (Object View) открываю папку "All Databases" нахожу там нужную базу, коннекчусь. иду в список таблиц, нахожу нужную, жму внизу кнопку "Open" (выгребается первые 100 записей из таблицы) и в текстовых полях вместо национальной кодировки вижу эти кракозябры....
...
Рейтинг: 0 / 0
проблема с кодировкой для win client - server 9.1 DB2 for linux
    #34367455
Alexander Mushnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander MushnikovHi all.
- есть удаленный сервер DB2 под Linux ver.9.1;
- установлен клиент под WinXP Pro SP1 Ru:
- база была создана с CODEPAGE=1208, CODESET=UTF-8;
- таблицы были импортированы из sybase ASE, штатными средствами (в ASE база тоже в UTF-8);
ТЕПЕРЬ ПРОБЛЕМА:
под Linux, в консоли данные выгребаются и отображаются правильно,
а под XP - проблема с кодировкой! там где должен быть один символ - видно 2, один из них как правило прямоугольник.
Переменные окружения ( при помощи db2set ) выставлены:
DB2INSTPROF=C:\IBM\SQLLIB
DB2CODEPAGE=1208
перерыл все возможные настройки - но нигде не нашел больше упоминаний об CharSet.
где косяк? помогите!


Проблема как-бы решилась для самописанных приложений...
Наваял на BCB6 клиента под win который коннектится к базе по tcp/ip через OLE provider (IBMDADB2).
при чтении и записи приходится делать ряд преобразований что-бы получить UTF-16 и обратно UTF-8.

при чтении:
WideString GetValue( Variant fiValue )
{
WideString v;
int lenv;
wchar_t *ibuf=NULL;
char *obuf=NULL;
int i;
unsigned short kod;
UTF8String ustr;


if( fiValue.IsNull() ) fiValue = "";
v = fiValue.operator WideString();
if( v != WideString( "" ) )
{
lenv = v.Length();
ibuf = new wchar_t[ lenv*2 + 16];
obuf = new char[ lenv + 16 ];
wcscpy( ibuf, fiValue.operator wchar_t *() );
for( i = 0; i < lenv; i++ ) { kod = ibuf ; obuf = kod; }
obuf[lenv] = 0;
ustr = obuf;
v = UTF8Decode( ustr );
SAFE_DELETE_ARR( ibuf );
SAFE_DELETE_ARR( obuf );
}

return( v );
}

при записи:
bool SetValue( TField f, WideString str_unicods )
{
AnsiString a;
wchar_t *w = NULL;
unsigned char *c = NULL;
int len;
unsigned short kod;
int ind;
Variant vvar;
WideString v;

a = UTF8Encode( str_unicods );
len = a.Length();
if( len > 0 )
{
w = new wchar_t[ len*2 + 16];
c = new char[ len + 16 ];
memcpy( c, a.c_str(), len ); c[len] = 0; c[len + 1] = 0;
for( ind = 0; ind < len; ind++ ) { kod = c[ind]; w[ind] = kod; }
w[len] = 0; w[len + 1] = 0;
v = WideString( w );
vvar = v;
f->AsVariant = vvar;
SAFE_DELETE_ARR( w );
SAFE_DELETE_ARR( c );
}
else
f->AsString = "";

return(true);
}

С уважением, Александр.
...
Рейтинг: 0 / 0
проблема с кодировкой для win client - server 9.1 DB2 for linux
    #34367804
Alexander MushnikovHi all.
- есть удаленный сервер DB2 под Linux ver.9.1;
- установлен клиент под WinXP Pro SP1 Ru:
- база была создана с CODEPAGE=1208, CODESET=UTF-8;


А какие параметры были заданы для COUNTRY и TERRITORY для этой базы?
Для России это должно быть COUNTRY=7, TERRITORY=RU

Alexander Mushnikov
а под XP - проблема с кодировкой! там где должен быть один символ - видно 2, один из них как правило прямоугольник.
Переменные окружения ( при помощи db2set ) выставлены:
DB2INSTPROF=C:\IBM\SQLLIB
DB2CODEPAGE=1208
перерыл все возможные настройки - но нигде не нашел больше упоминаний об CharSet.
где косяк? помогите!


DB2CODEPAGE=1208 - на клиенте вот это излишне и как раз может приводить к этому эффекту.

А что получится ( и в какой кодировке) если выполнить SELECT из CLI и сохранить его в файл?

Т.е. сделать (по логике) нужно так:
На сервере (база):
CODEPAGE 1208
CODESET UTF-8
COUNTRY 7
TERRITORY RU

На клиенте (XP)
В региональных настройках поставить
Location: Russia
Standards and formats: Russian
DB2CODEPAGE=1208 - убрать, или выставить значение 1251 (по умолчанию).

После этого желательно выполнить запрос из CLI, с сохранением результата в файл, если результат будет в кодировке 1251, значит все ОК.
...
Рейтинг: 0 / 0
проблема с кодировкой для win client - server 9.1 DB2 for linux
    #34367840
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почитайте тут про unicode в db2.
...
Рейтинг: 0 / 0
проблема с кодировкой для win client - server 9.1 DB2 for linux
    #34368135
Alexander Mushnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Евгений Хабаров
А какие параметры были заданы для COUNTRY и TERRITORY для этой базы?
Для России это должно быть COUNTRY=7, TERRITORY=RU

для России это как раз и должно быть, но клиенты не только в России....в Греции например тоже есть.
Евгений Хабаров
А что получится ( и в какой кодировке) если выполнить SELECT из CLI и сохранить его в файл?

OLE driver возвращает все по честному, в TField->Value (VCL) содержится именно UTF-8 символы, и в своем приложении я без проблем перевожу их в UTF-16, и они красиво отображаются, причем для любых языков.
Евгений Хабаров
Т.е. сделать (по логике) нужно так:
На сервере (база):
CODEPAGE 1208
CODESET UTF-8
COUNTRY 7
TERRITORY RU

для нашего сервака так - как раз нельзя.
Евгений Хабаров
На клиенте (XP)
В региональных настройках поставить
Location: Russia
Standards and formats: Russian
DB2CODEPAGE=1208 - убрать, или выставить значение 1251 (по умолчанию).

В региональных настройках XP или у "клиента DB2" еще есть такие?
1208 - убрал. те-же яйца...очень похоже что IBM-ский Централ тоже получает честный UTF-8(знакомые по форме символы), но похоже не умеет его отображать...
Евгений Хабаров
После этого желательно выполнить запрос из CLI, с сохранением результата в файл, если результат будет в кодировке 1251, значит все ОК.

да в моем приложении - все ок с кодировками. Криво отображает IBM-вский Централ.....да фиг с ним - не очень то и хотелось;-)
...
Рейтинг: 0 / 0
проблема с кодировкой для win client - server 9.1 DB2 for linux
    #34368139
Alexander Mushnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinПочитайте тут про unicode в db2.
О! спасибо за ссылочку.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / проблема с кодировкой для win client - server 9.1 DB2 for linux
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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