Украинская кодировка

Обсуждение возникших проблем, предложений и ошибок ODAC компонентов
Закрыто
shiva4
Сообщения: 3
Зарегистрирован: Пт 21 июл 2017 12:29

Украинская кодировка

Сообщение shiva4 » Пт 21 июл 2017 12:59

Всем привет.

Есть Делфи 5 Sp1 и компоненты ODAC v. 3.90.0.55.

Недавно возникла надобность использования украинского языка в таблицах Oracle. Все бы хорошо, но при сортировке "Є", "І" украинских букв сортировка не та что ожидается. Понятное дело что asc-коды этих букв меньше буквы "А" и поэтому, то что начинается с "Є", "І" идет впереди "А".

При использовании OraSession.net = false, т.е. работа через клиента Oracle - сортировка отрабатывает как должно бы, т.е идет в нормальном алфавитном порядке и т.д.

При OraSession.net = True, как понимаю, используются настройки кодировки самих ODAC-ов и вот тут уже "Є", "І" идут при сортировке раньше через буква "А".

Тут бы можно было сказать мол используй клиента Oracle, но ведь 1 из самых важных вещей, то что с помощью компонет Odac можно обходиться без клиента Oracle. И мне нужно именно без клиента oracle получать нормальную сортировку.

В итоге вот и вопрос, как сделать что бы при При OraSession.net = True украинские буквы отображались не перед буквой "А", а в нормальном алфавитном порядке?

Пробовал в OraSession.CharSet кодировки CL8KOI8R,CL8KOI8U, UTF-8,CL8MSWIN1251 и подобные..но результата не получил. Кстати в настройках клиента oracle в реестре кодовой страницей выбрана RUSSIAN_CIS.CL8MSWIN1251 и как понимаю CL8MSWIN1251 это она же. Установка CL8MSWIN1251 так же не дала положительного результата.

Добавлю, что использование столь древних версий Делфи и ODAC обуславливается привязкой некоторых проектов выполненных на этой версии делфи и некотором наборе компонет для delphi5. Искать и адаптировать под что то новое не хотелось бы, в виду платности компонент(речь не только о ODAC компонентах) которые придется приобретать или искать под новую версию что в общем то не практично, раз уже есть все готовое в данном случае.

MaximG
Devart Team
Сообщения: 114
Зарегистрирован: Пн 06 июл 2015 12:51

Re: Украинская кодировка

Сообщение MaximG » Ср 26 июл 2017 16:38

Спасибо за Вашу информацию. Мы проверим поведение свойства CharSet при использовании Direct Mode (OraSession.net = True). Однако мы не сможем внести необходимые исправления в случае обнаружения ошибки в ODAC v. 3.90.0.55. В настоящее время для решения проблемы Вы можете задавать необходимые региональные настройки явным образом посредством следующего запроса :

Код: Выделить всё

ALTER SESSION SET NLS_LANGUAGE="UKRAINIAN"

shiva4
Сообщения: 3
Зарегистрирован: Пт 21 июл 2017 12:29

Re: Украинская кодировка

Сообщение shiva4 » Вт 01 авг 2017 11:07

Спасибо за ответ. Как вариант, этот способ решения тоже не плох. Всего наилучшего :)

shiva4
Сообщения: 3
Зарегистрирован: Пт 21 июл 2017 12:29

Re: Украинская кодировка

Сообщение shiva4 » Вт 01 авг 2017 13:04

нашел вариант лучше:

select * from table t
order by NLSSORT(t.Title , 'NLS_SORT=UKRAINIAN')

Закрыто