На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела C/C++: Базы данных
Модераторы: B.V.
  
    > UNIX UNICODE ORACLE PRO*C++
      Привет всем,
      дали мне вот задание пол униксом на Си++ прочитать юникод и представить его как хекс(HEX) и распесатать, а я даже не могу представить как это зделать.
      Так вот вопрос 1
      Как хранится уникод в базе оракла, я так понял по обрывчатым свееденьям, что несколько байт на символ, тогда сразу другой вопрос как прочитать его из базы спомощью ПРО С прекомпайлера, ОК я загнал его в varchar но как определить сколько байт на char приходится, вроде как в документах написано что переменная_varchar.len кранит не количество байт а количество chars, но там говорится также, что индикатор должен содержать оригинальную длинну в байтах, а уменя падла ноль там, все вроде зделал как надо а не получается, перкомпайлеру сказал что эта переменная с результатом есть NLS_CHAR толи он глухой толи я что недаделал, если всего два байта на char, тогда нет проблем, вообщето есть, как хранится юникод в оракле я тоже незнаю, старший байт в переди или младший, и как я всетааки определю что это юникод а не простая строчка, беда, горю
      Если кто поможет, буду премного блогодарен.
      Жора
        кинь сырц просевый и plsql структуры
        возвращаемых данных (т.е. out параметры
        процедуры или что там у тебя).
          Спасибо конечно а причем тут PL SQL.
          Да и разобрался я вроде бы, не хранит похоже оракл юникод в варчаре2, а только один байт на символ, а потом драйвера преобразубт (некоторые) его в юникод вообщем подтосовкой занимаются, а под юниксом, я скомпилировал программу так что переменная varchar должна принимать юникод, а там то его как раз и небыло пришлось мап файл брать и вручную преобразовывать получаемые байты в юникод, все просто вообщем оказалось.
          Извините за беспокойство
          и спасибо
            как причем. посмотреть что у тебя за типы
            на выходе.
            почему в varchar2 только 1 байт ?
            почитай National Language Support (NLS) в документации.
              Читал, ну так не помогло, там вообще немного написанно, за эту неделю я весь интернет перелазил, а может и не там ходил. Вообщем одной программой, через jdbc была записанна строчка на арабском в базу данных, и был обещан UNICODE тоесть 2 байта на значок и потом когда на тойже яве читали то так и получалось, как бы на клиентской стороне получалось два байта, а вот когда я под Юнихом стал читать туже строчку, то хренас два, моя varchar готова принимать а вот принимается один байт на символ, хотя в varchar_var.len стояло половина принятых байт. Такие вот дел, то есть jdbc драйвер сам преобразует в юникод (2 байта) а драйвер оракла, нехотит, может он как и настраиваеся для такой ерунды, но я не администратор, и разбиратся не хочу, я так подозреваю что на сервере может только nvarchar хранить два байта.
              Но спасибо всеравно
                да вроде jdbc тут нипричем.
                мыл ушел.
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0260 ]   [ 16 queries used ]   [ Generated: 27.04.24, 01:44 GMT ]