Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.142.197.212] |
|
Сообщ.
#1
,
|
|
|
Привет всем,
дали мне вот задание пол униксом на Си++ прочитать юникод и представить его как хекс(HEX) и распесатать, а я даже не могу представить как это зделать. Так вот вопрос 1 Как хранится уникод в базе оракла, я так понял по обрывчатым свееденьям, что несколько байт на символ, тогда сразу другой вопрос как прочитать его из базы спомощью ПРО С прекомпайлера, ОК я загнал его в varchar но как определить сколько байт на char приходится, вроде как в документах написано что переменная_varchar.len кранит не количество байт а количество chars, но там говорится также, что индикатор должен содержать оригинальную длинну в байтах, а уменя падла ноль там, все вроде зделал как надо а не получается, перкомпайлеру сказал что эта переменная с результатом есть NLS_CHAR толи он глухой толи я что недаделал, если всего два байта на char, тогда нет проблем, вообщето есть, как хранится юникод в оракле я тоже незнаю, старший байт в переди или младший, и как я всетааки определю что это юникод а не простая строчка, беда, горю Если кто поможет, буду премного блогодарен. Жора |
Сообщ.
#2
,
|
|
|
кинь сырц просевый и plsql структуры
возвращаемых данных (т.е. out параметры процедуры или что там у тебя). |
Сообщ.
#3
,
|
|
|
Спасибо конечно а причем тут PL SQL.
Да и разобрался я вроде бы, не хранит похоже оракл юникод в варчаре2, а только один байт на символ, а потом драйвера преобразубт (некоторые) его в юникод вообщем подтосовкой занимаются, а под юниксом, я скомпилировал программу так что переменная varchar должна принимать юникод, а там то его как раз и небыло пришлось мап файл брать и вручную преобразовывать получаемые байты в юникод, все просто вообщем оказалось. Извините за беспокойство и спасибо |
Сообщ.
#4
,
|
|
|
как причем. посмотреть что у тебя за типы
на выходе. почему в varchar2 только 1 байт ? почитай National Language Support (NLS) в документации. |
Сообщ.
#5
,
|
|
|
Читал, ну так не помогло, там вообще немного написанно, за эту неделю я весь интернет перелазил, а может и не там ходил. Вообщем одной программой, через jdbc была записанна строчка на арабском в базу данных, и был обещан UNICODE тоесть 2 байта на значок и потом когда на тойже яве читали то так и получалось, как бы на клиентской стороне получалось два байта, а вот когда я под Юнихом стал читать туже строчку, то хренас два, моя varchar готова принимать а вот принимается один байт на символ, хотя в varchar_var.len стояло половина принятых байт. Такие вот дел, то есть jdbc драйвер сам преобразует в юникод (2 байта) а драйвер оракла, нехотит, может он как и настраиваеся для такой ерунды, но я не администратор, и разбиратся не хочу, я так подозреваю что на сервере может только nvarchar хранить два байта.
Но спасибо всеравно |
Сообщ.
#6
,
|
|
|
да вроде jdbc тут нипричем.
мыл ушел. |