![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Юникоды и компонент TOracleQuery [D5]
Orxan © (2006-08-29 09:35:00)Мастера помогите пожалуйста с проблемкой.
БД- оракл 10g, делфи 5, компоненты TntUnicodeControls_2_1_11 и doa.
Данные в таблице содержатся в юникодах. Селектирую из таблицы. понимаю, что
TntEdit1.Text:=Q.FieldasString('А');
уже не юникод. и выводится знак вопроса в не стандартных символах.
при написании
TntEdit1.Text:=Q.Field('А');
уже выводится непонятный символ вместо "?".
помогите пожалуйста разрешить проблемку, может ктото встречался.
Спосибо.
ANB (2006-08-29 16:26:00) [21]Кстати, помнится 9-ка хотела явного указания N''. Без этого работать не хотела. Не помню, как я через параметры это запихал, но запихал.
ANB (2006-08-29 16:25:00) [22]Текс. Провел эксперимент на 8-ке.
create table Table1_T (ID number, S nvarchar2 (2000))
select dump(S) from Table1_T
select S from Table1_T
update Table1_T
set S = 'Вася'
update Table1_T
set S = N'Петя'
Жрет и васю и петю и показывает все по русски. Работал в тоаде. dump показывает, что строка лежит в юникоде.
Anatoly Podgoretsky (2006-08-29 16:18:00) [23]ANB © (29.08.06 16:16) [27]
Я не знаю Оракл, но думаю что это так, поскольку с других именно так и в разных по разному указывается, при том это относитстя не только к Юникоду, но особенно к ANSI
ANB (2006-08-29 16:16:00) [24]Текс. Насколько я помню, при работе с юникодом нужно ораклу явно указывать, что строка в юникоде. Что то в этом роде DOA обязан поддерживать.
Anatoly Podgoretsky (2006-08-29 16:09:00) [25]Orxan (29.08.06 16:07) [24]
Не играет роли, роль играет только текущая локализация, при том для конкретного потока, возможно даже разные локализации в разных потоках, кроме того еще вмешивается и сервер, если ANSI поступает в него.
Anatoly Podgoretsky (2006-08-29 16:07:00) [26]ANB © (29.08.06 15:24) [21]
Конечно, конвертирование ANSI туда и обратно базируется на текущей локализации сторон. Если языков более двух, то вообще невозможно.
Orxan (2006-08-29 16:07:00) [27]не, винда английская стоит.
попытаюсь через адо опять сделать.
sniknik (2006-08-29 15:29:00) [28]> Критичен ли тут именно юникод на клиенте ?
да, критичен. т.к. 3 используемых языка насчитал (английский (всегда есть), русский (ну не на турецкой же винде разработка), турецкий (нужен))
Orxan (2006-08-29 15:24:00) [29]да есть готовая прога на жаве написана, без проблем работает. так что пересоздавать не получится.
да вот эта прога первая, и такая проблемка. да указывали западно-европейскую кодировку, поэтомуто я прописывал AMERICAN_AMERICA.WE8MSWIN1252
спосибо за помощ.
ANB (2006-08-29 15:24:00) [30]
> а ты уверен что он поддерживает юникод? я нет.
Я - тоже нет. Но одак прекрасно лопал ANSI, оракла сама конвертила в юникод и обратно. Критичен ли тут именно юникод на клиенте ?
ANB (2006-08-29 15:22:00) [31]Еще можешь вот так попробовать RUSSIAN_CIS.CL8MSWIN1251.
Кстати, проведи эксперимент - создай тестовую таблицу с varchar2 полем и поковыряй ее на предмет русских букв.
sniknik (2006-08-29 15:21:00) [32]> поменял на адо. но опять же при присваивании значения этого поля в тнтедит показвает " ї "
а ї это уже не вопросы (ошибки преобразований) это уже юникод, только не установленная на машине страница похоже (тогдо оно приводит к максимально похожей, но...).
возми ту, что у тебя есть (разные сайты пооткрывай) но точно юникодовскую, и сначала запиши в базу, после прочитай, должно быть одно и тоже... если нет, значит неправильно сделал. когда получиш номальную строку на выход замени tnt компонент на стандартный (убедится что юникод, он опять вопросами станет)
если все работает (и пишеш и чатаеш) то можеш смело прогу куда хочеш отправлять у них будет также.
> ЗЫ. Не надо через ADO с ораклом работать при наличии хотя бы DOA.
а ты уверен что он поддерживает юникод? я нет.
ANB (2006-08-29 15:17:00) [33]
> Orxan (29.08.06 15:10) [17]
Значит сервак таки локализованный обычный и при создании БД/инстанса указали западно-европейскую кодировку. Базу пересоздавать надо. А еще кто-нибудь на этой базе работает без проблем ?
Orxan (2006-08-29 15:10:00) [34]воткнул везде AMERICAN_AMERICA.CL8MSWIN1251
теперь знаки вопроса вышли
ANB (2006-08-29 15:03:00) [35]Для тех, кто в танке - третий раз. У тебя указана западноевропейская кодировка и, есно, ничего не работает. Я ж написал, что воткнуть : AMERICAN_AMERICA.CL8MSWIN1251.
Orxan (2006-08-29 14:57:00) [36]не локалка.
Я прогу не для себя пишу, и поэтому мне турецкие буквы нужны.
я прописал везде AMERICAN_AMERICA.WE8MSWIN1252 потому что этим чарсетом устанавливали оракл. но опять проблемка не разрешилась
ANB (2006-08-29 14:34:00) [37]
> Orxan (29.08.06 14:31) [13]
Тады все понятно. У тебя русский язык порубан был. Воткни везде то, что я написал и проверь, что получилось в тоаде.
Кстати, оракла то какая ? Надеюсь не локализованный XE ?
Orxan (2006-08-29 14:31:00) [38]в реестре только в одном месте у меня стоял
AMERICAN_AMERICA.WE8MSWIN1252
а в остальных местах N/A
ANB (2006-08-29 14:23:00) [39]
> Sergey13 © (29.08.06 14:19) [11]
тоад сам понимает юникодные поля. Если в нем неправильно показывает, проблема либо с NLS_LANG на клиенте, либо кривая база.
Но не факт, что когда заработает тоад, заработает делфовая программа :)
Просто проблемы надо решать поэтапно.
Кстати, Oracle XE автоматом все русские буквы перекидывает в юникод. При этом с одаком проблем не возникало.
Sergey13 (2006-08-29 14:19:00) [40]> [10] ANB © (29.08.06 14:13)
Похоже ему не это надо.
> [6] Orxan (29.08.06 14:04)
Я не работал ни с юникодом ни с 10-кой, но на
http://www.sql.ru/forum/actualtopics.aspx?bid=3
поиск по "UNICODE" дает несколько страниц топиков.