Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Проблема с кирилицей при работе Message Broker с Oralce / 5 сообщений из 5, страница 1 из 1
18.02.2010, 13:22
    #36477461
Vincent Vega
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кирилицей при работе Message Broker с Oralce
Дано:
Message Broker 6.1.0.5 (AIX)
Oracle 10.2.0.4.0 (AIX)
Вызываем по ODBC процедуру.

Процедура в Oracle:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Procedure Vs_Proc_Test_1(
    pID      IN NUMBER ,
    pMESSAGE IN VARCHAR2 ,
    pSTATUS OUT NUMBER ,
    pRES OUT VARCHAR2 )
AS
BEGIN
  INSERT INTO VS_TEST_1
    (ID, MESSAGE
    ) VALUES
    (pID, pMESSAGE
    );
    Pstatus := 1 ;
    pRes:='!русский!';
END VS_PROC_TEST_1;

Вызов процедуры в брокере:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
-- тестовая процедура для проверки работы с базой данных
CREATE PROCEDURE TESTDATA(
IN pmsg_id INTEGER,
IN perrortext CHARACTER,
OUT status INTEGER,
OUT result CHARACTER
)
LANGUAGE DATABASE EXTERNAL NAME "websphere.Vs_Proc_Test_1";
-- нода Database - вызов тестовой процедуры для инсерта данных и получения ответных данных
CREATE DATABASE MODULE Main_Database
	CREATE FUNCTION Main() RETURNS BOOLEAN
	BEGIN
		DECLARE status INTEGER;
		DECLARE result CHARACTER;
		--CALL TESTDATA(2, 'test message', status, result);
		CALL TESTDATA( 3 , 'русский текст', status, result);
		SET Environment.Variables.Data.Status = status;
		SET Environment.Variables.Data.Result = result;
		RETURN TRUE;
	END;

END MODULE;

В таблице оракл русский текст инсертится нормально. А вот исходящий параметр передается в совершенно непонятной кодировке.
Пример сохраненного сообщения:

Код: plaintext
1.
2.
3.
4.
5.
6.
 <DATA>
  <PMSG_ID> 5171263 </PMSG_ID> 
  <Status> 1 </Status> 
  <Result>!!</Result> 
  </DATA>

CAST проблему не решает.
В чем может быть глюк?
...
Рейтинг: 0 / 0
18.02.2010, 17:11
    #36478228
BRK01
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кирилицей при работе Message Broker с Oralce
Доброго времени суток, Vincent Vega

В какой кодировке база данных?
Плюс, если сообщение результирующее уходит по MQ или HTTP/SOAP, смотрите на протокольные заголовки.

Плюс, если под дебагом русский виден, то касяк в протоколах.
...
Рейтинг: 0 / 0
18.02.2010, 17:55
    #36478377
Vincent Vega
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кирилицей при работе Message Broker с Oralce
BRK01,

Кодировки базы следующие:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 1  	NLS_NCHAR_CHARACTERSET 	UTF8                        
 2  	NLS_LANGUAGE           	AMERICAN                    
 3  	NLS_TERRITORY          	AMERICA                     
 4  	NLS_CURRENCY           	$                           
 5  	NLS_ISO_CURRENCY       	AMERICA                     
 6  	NLS_NUMERIC_CHARACTERS 	.,                          
 7  	NLS_CHARACTERSET       	CL8MSWIN1251  

Ответное сообщение уходит в очередь + я сохраняю его в файл.
Под дебагером тоже квадратики отображаются.
Есть подозрение что из-за того что база в кодировке win1251, а ODBC драйвер работает с ней под UTF-8... Но это на уровне догадок. Если это так то как в ODBC64.ini настроить кодировку в которой работает драйвер
...
Рейтинг: 0 / 0
19.02.2010, 11:32
    #36479512
Vincent Vega
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кирилицей при работе Message Broker с Oralce
Эксперементами с файлом odbc64.ini удалось получить следующее. К настройкам подключения к оракл добавил:

Код: plaintext
IANAAppCodePage=2251

После этого процедура стала возвращать "рстуф" вместо ожидаемых "абвгд" (смотрю в дебагере), это уже лучше чем просто квадратики, но все же не правильно.

Какие еще будут идеи?
...
Рейтинг: 0 / 0
19.02.2010, 12:05
    #36479624
Vincent Vega
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кирилицей при работе Message Broker с Oralce
Методом научного тыка решение нашлось следующее:

Код: plaintext
IANAAppCodePage= 8 

это кодировка ISO-8859-5. Теперь кириллица работает так как надо!
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Проблема с кирилицей при работе Message Broker с Oralce / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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