Автор
|
Тема: UNIX UNICODE ORACLE PRO*C++
|
the_moon |
опубликован 15-03-2001 07:34 MSK
Привет всем,дали мне вот задание пол униксом на Си++ прочитать юникод и представить его как хекс(HEX) и распесатать, а я даже не могу представить как это зделать. Так вот вопрос 1 Как хранится уникод в базе оракла, я так понял по обрывчатым свееденьям, что несколько байт на символ, тогда сразу другой вопрос как прочитать его из базы спомощью ПРО С прекомпайлера, ОК я загнал его в varchar но как определить сколько байт на char приходится, вроде как в документах написано что переменная_varchar.len кранит не количество байт а количество chars, но там говорится также, что индикатор должен содержать оригинальную длинну в байтах, а уменя падла ноль там, все вроде зделал как надо а не получается, перкомпайлеру сказал что эта переменная с результатом есть NLS_CHAR толи он глухой толи я что недаделал, если всего два байта на char, тогда нет проблем, вообщето есть, как хранится юникод в оракле я тоже незнаю, старший байт в переди или младший, и как я всетааки определю что это юникод а не простая строчка, беда, горю Если кто поможет, буду премного блогодарен. Жора
|
lamo
|
опубликован 15-03-2001 15:22 MSK
кинь сырц просевый и plsql структуры возвращаемых данных (т.е. out параметры процедуры или что там у тебя).
|
the_moon
|
опубликован 15-03-2001 20:47 MSK
Спасибо конечно а причем тут PL SQL. Да и разобрался я вроде бы, не хранит похоже оракл юникод в варчаре2, а только один байт на символ, а потом драйвера преобразубт (некоторые) его в юникод вообщем подтосовкой занимаются, а под юниксом, я скомпилировал программу так что переменная varchar должна принимать юникод, а там то его как раз и небыло пришлось мап файл брать и вручную преобразовывать получаемые байты в юникод, все просто вообщем оказалось.Извините за беспокойство и спасибо |
lamo
|
опубликован 16-03-2001 04:01 MSK
как причем. посмотреть что у тебя за типы на выходе. почему в varchar2 только 1 байт ? почитай National Language Support (NLS) в документации.
|
the_moon
|
опубликован 16-03-2001 07:53 MSK
Читал, ну так не помогло, там вообще немного написанно, за эту неделю я весь интернет перелазил, а может и не там ходил. Вообщем одной программой, через jdbc была записанна строчка на арабском в базу данных, и был обещан UNICODE тоесть 2 байта на значок и потом когда на тойже яве читали то так и получалось, как бы на клиентской стороне получалось два байта, а вот когда я под Юнихом стал читать туже строчку, то хренас два, моя varchar готова принимать а вот принимается один байт на символ, хотя в varchar_var.len стояло половина принятых байт. Такие вот дел, то есть jdbc драйвер сам преобразует в юникод (2 байта) а драйвер оракла, нехотит, может он как и настраиваеся для такой ерунды, но я не администратор, и разбиратся не хочу, я так подозреваю что на сервере может только nvarchar хранить два байта.Но спасибо всеравно |
lamo
|
опубликован 16-03-2001 11:07 MSK
да вроде jdbc тут нипричем. мыл ушел.
|