powered by simpleCommunicator - 2.0.44     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / русские данные никаким LANGDRIVERом не достаются
8 сообщений из 8, страница 1 из 1
русские данные никаким LANGDRIVERом не достаются
    #32004545
Evgen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
База сервер под SUN (UNIX) 8.0.5, клиент 8.1.7 под NT4рус или win98рус, ч/з TCP/IP
базу вижу, и через ODBC (Oracle ODBC Test), и Native (через Delphi 4 доступ с алиасом BDE), все перепробовал драйвера - не получается правильно читать строки на русском. Кстати, сам клиент Net8Assistant также говорит не по русски - может быть, тут проблема со шрифтом?
В дельфи отображение точно идет фонтом, который правильно передает русские тексты - проверено. Если сделать перекодировку newCh = Chr(Ord(oldCh)+12 - русские буквы исправляются, а другие портятся...

Где и что нужно настраивать/проверять?

Спасибо
...
Рейтинг: 0 / 0
русские данные никаким LANGDRIVERом не достаются
    #32004959
Arcady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здесь для начала я бы проверил настройку клиента Oracle на предмет кодировки.
Для этого из какой нибудь родной для Oracle %) оболочки (например SQL*Plus)
надо выполнить запрос типа:

select upper('абвгдЕЁЖЗ') from dual;

должно выдать строку вида:

UPPER('АБ
---------
АБВГДЕЁЖЗ

...ежели вместо этого выдаётся что-либо другое, значит неверно настроены
NLS параметры клиента Oracle:
В Windows это делается в реестре раздел HKEY_LOCAL_MACHINE\Software\Oracle,
параметр NLS_LANG. Для Wind'ов у меня стоит значение AMERICAN_AMERICA.CL8MSWIN1251
(но также можно AMERICAN_CIS.CL8MSWIN1251 или RUSSIAN_CIS.CL8MSWIN1251 и тд, лишь бы
CHARSET был CL8MSWIN1251).
Если это WinNT то NLS_LANG там возможно задается также в виде переменной окружения,
там его тоже надо поменять.
А вообще-то надо еще посмотреть CHARSET базы данных:

select * from sys.nls_database_parameters;

PARAMETER VALUE
------------------------------ ------------------------------
...
NLS_CHARACTERSET CL8MSWIN1251
...

и уже от этого плясать. %)
А насчет BDE у меня для алиаса указан LANGDRIVER "Pdox ANSI Cyrillic" и всё ОК.
...
Рейтинг: 0 / 0
русские данные никаким LANGDRIVERом не достаются
    #32008037
Evgen 21jun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После поиска в реестре (NT4рус SP6A)

в двух местах исправил NLS_LANG с NA на AMERICAN_AMERICA.CL8MSWIN1251
или RUSSIAN_CIS.CL8MSWIN1251 в результате оболочка SQL+ заработала
по-английски, а раньше говорила по китайски (в смысле - по русски, но нечитаемо).
Net8 Assistant, тем не менее, так и говорит по китайски.

С базой результат тот-же - русские буквы не читаются.
(в том числе и с SQL* Plus, и из Delphi c Oracle Direct Access components)

Выполнил рекомендованные запросы - ниже результат.

Вопрос - что можно сделать, не повредив работоспособности самой базы,
но чтобы можно было правильно читать поля с русскими данными.
(сама работающая программа, на удивление, совершенно нормально работает
с русскими данными, и рисковать ее неработоспособностью я не могу, так же
как и не имею возможности изменять ее, ни исходные тексты, ни даже исполнимые модули)

Можно (и безопасно ли) просто поменять CHARACTERSET, и на что?


SQL> select * from sys.nls_database_parameters;

PARAMETER VALUE
------------------------------ ------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-YY
NLS_DATE_LANGUAGE AMERICAN
NLS_CHARACTERSET US7ASCII
NLS_SORT BINARY
NLS_NCHAR_CHARACTERSET US7ASCII

PARAMETER VALUE
------------------------------ ------------------------------
NLS_RDBMS_VERSION 8.0.5.0.0

12 rows selected.

SQL> select upper('уцйжлд ghfhg') from dual;

UPPER('?????
------------
?????? GHFHG

SQL>
...
Рейтинг: 0 / 0
русские данные никаким LANGDRIVERом не достаются
    #32008104
iperezh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
беда в кодировке самой базы. Нужна кодировка с кирилицей, например CL8ISO8859P5. Но сложность в том, что Oracle не рекомендует менять кодировку существующей БД, рекомендуется пересоздать БД. Правда в старых номерах Oracle Magazine была статья, где рассказывалось как можно пломенять кодировку, но результат не гарантировался ((. Если интересно, могу дать ссылку на номер, но только в понедельник...
...
Рейтинг: 0 / 0
русские данные никаким LANGDRIVERом не достаются
    #32008105
iperezh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
беда в кодировке самой базы. Нужна кодировка с кирилицей, например CL8ISO8859P5. Но сложность в том, что Oracle не рекомендует менять кодировку существующей БД, рекомендуется пересоздать БД. Правда в старых номерах Oracle Magazine была статья, где рассказывалось как можно пломенять кодировку, но результат не гарантировался ((. Если интересно, могу дать ссылку на номер, но только в понедельник...
...
Рейтинг: 0 / 0
русские данные никаким LANGDRIVERом не достаются
    #32008106
iperezh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
беда в кодировке самой базы. Нужна кодировка с кирилицей, например CL8ISO8859P5. Но сложность в том, что Oracle не рекомендует менять кодировку существующей БД, рекомендуется пересоздать БД. Правда в старых номерах Oracle Magazine была статья, где рассказывалось как можно пломенять кодировку, но результат не гарантировался ((. Если интересно, могу дать ссылку на номер, но только в понедельник...
...
Рейтинг: 0 / 0
русские данные никаким LANGDRIVERом не достаются
    #32008119
Andrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сталкивался с этим. Переменная NLS_LANG в NT задается как Russian_.CL8MSWIN1251.
Тогда работает.
...
Рейтинг: 0 / 0
русские данные никаким LANGDRIVERом не достаются
    #32008683
Arcady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как это:
"...(сама работающая программа, на удивление, совершенно нормально работает
с русскими данными, и рисковать ее неработоспособностью я не могу, так же
как и не имею возможности изменять ее, ни исходные тексты, ни даже исполнимые модули)"

То есть где-то ты эти данные все-таки видишь по-русски или нет?

Ну и CHARSET у базы стоит не русский, как уже выше сказали. Надо пересоздавать базу
с правильным CHARSET'ом %)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / русские данные никаким LANGDRIVERом не достаются
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]