Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 из БД с cl8mswin1251 в БД с AL32UTF8 через ODBC получаеются кракозябры  [new]
receiver
Member

Откуда:
Сообщений: 289
Собственно, все в сабже.

Что можно сделать и можно ли?
еще раз уточню, что 1С забирает данные через ODBC, а не через DB LINK.

есть ли какие-нибудь настройки ODBC?
25 апр 21, 19:51    [22314029]     Ответить | Цитировать Сообщить модератору
 Re: из БД с cl8mswin1251 в БД с AL32UTF8 через ODBC получаеются кракозябры  [new]
Elic
Member

Откуда:
Сообщений: 30166
receiver
Собственно, все в сабже.
В сабже херня. Там утверждается, что есть две БД. И при чём тут недо-эс? И ODBC?

Сообщение было отредактировано: 25 апр 21, 20:18
25 апр 21, 20:24    [22314035]     Ответить | Цитировать Сообщить модератору
 Re: из БД с cl8mswin1251 в БД с AL32UTF8 через ODBC получаеются кракозябры  [new]
receiver
Member

Откуда:
Сообщений: 289
Elic,
не столько даже две БД, поскольку через db_link они хорошо разговаривают,
а то, что на одной БД стоит 1C и запросы оттуда, через ODBC, возвращают кыргуду

еще раз поясню беду - 1с, живущая на одном сервере с БД (AL32UTF8) забирает данные из другой (cl8mswin1251)
забирает через ODBC.
и в строках выводит ???????

Сообщение было отредактировано: 25 апр 21, 20:35
25 апр 21, 20:42    [22314041]     Ответить | Цитировать Сообщить модератору
 Re: из БД с cl8mswin1251 в БД с AL32UTF8 через ODBC получаеются кракозябры  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8254
receiver,

Запустите "на одном сервере с БД (AL32UTF8)" стандартную утилиту SQL*Plus,
выполните команду SELECT из таблицы с данными на русском языке и покажите результат.
25 апр 21, 21:06    [22314046]     Ответить | Цитировать Сообщить модератору
 Re: из БД с cl8mswin1251 в БД с AL32UTF8 через ODBC получаеются кракозябры  [new]
receiver
Member

Откуда:
Сообщений: 289
create table abc(str varchar2(20));

insert into abc values('проверка');
insert into abc values('проверка');
insert into abc values('проверка');
insert into abc values('проверка');
commit;

select * from abc;

STR
----
проверка
проверка
проверка
проверка

Сообщение было отредактировано: 25 апр 21, 21:12
25 апр 21, 21:18    [22314057]     Ответить | Цитировать Сообщить модератору
 Re: из БД с cl8mswin1251 в БД с AL32UTF8 через ODBC получаеются кракозябры  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8254
receiver
create table abc(str varchar2(20));

insert into abc values('проверка');
insert into abc values('проверка');
insert into abc values('проверка');
insert into abc values('проверка');
commit;

select * from abc;

STR
----
проверка
проверка
проверка
проверка

1) Я правильно понимаю, что это выборка из базы с кодировкой AL32UTF8
с помощью стандартной утилиты SQL*Plus, запущенной на этом же сервере?

2) Теперь выполните с помощью этой же утилиты SQL*Plus, запущенной на этом же сервере,
выборку данных "из другой (cl8mswin1251)". Покажите, что получится.
25 апр 21, 21:31    [22314060]     Ответить | Цитировать Сообщить модератору
 Re: из БД с cl8mswin1251 в БД с AL32UTF8 через ODBC получаеются кракозябры  [new]
receiver
Member

Откуда:
Сообщений: 289
да, первое действие относилось к БД с AL32UTF8,
которая забирает данные


ниже, те же действия на БД с cl8mswin1251, к которой направлен запрос

create table abc(str varchar2(20));
insert into abc values('проверка');
insert into abc values('проверка');
insert into abc values('проверка');
insert into abc values('проверка');
commit;
select * from abc;

STR
-----
проверка
проверка
проверка
проверка
25 апр 21, 21:39    [22314063]     Ответить | Цитировать Сообщить модератору
 Re: из БД с cl8mswin1251 в БД с AL32UTF8 через ODBC получаеются кракозябры  [new]
receiver
Member

Откуда:
Сообщений: 289
ПОСПЕШИЛ!

второй запрос я выполнял сначала в SQL Developer.
а именно в SQL*Plus я получил облом!

SQL> select * from abc;

STR
--------------------------
????
????
????
????
25 апр 21, 21:43    [22314068]     Ответить | Цитировать Сообщить модератору
 Re: из БД с cl8mswin1251 в БД с AL32UTF8 через ODBC получаеются кракозябры  [new]
receiver
Member

Откуда:
Сообщений: 289
к слову, обе базы на одном сервере.
вчера накрылся сервер для 1С и я активировал standby на том же сервере, где и первая БД.
25 апр 21, 21:46    [22314070]     Ответить | Цитировать Сообщить модератору
 Re: из БД с cl8mswin1251 в БД с AL32UTF8 через ODBC получаеются кракозябры  [new]
receiver
Member

Откуда:
Сообщений: 289
нет, оказалось, что все нормально.
просто пока я пытался что-то ухватить, то изменил в regedit

RUSSIAN_RUSSIA.CL8MSWIN1251
на
RUSSIAN_RUSSIA.AL32UTF8

нынче, когда вернул
RUSSIAN_RUSSIA.CL8MSWIN1251

обе БД выводят нормальные русские символы.
25 апр 21, 21:54    [22314072]     Ответить | Цитировать Сообщить модератору
 Re: из БД с cl8mswin1251 в БД с AL32UTF8 через ODBC получаеются кракозябры  [new]
receiver
Member

Откуда:
Сообщений: 289
вот что получилось - вдруг, кому пригодится.

попытки изменить командой NLS_LANG на уровне ОС,
приводили к тому, что 1с вообще не инициализировался.
управлял этим не я - коллега, пользующийся 1с был далеко и общались по телефону.
а потом он попробовал через GUI окошечки Windows Server задать NLS_LANG
только для одного пользователя, от имени которого он работал.
и все стало нормально!

мы увидели русскую знакогенерацию, что и хотели!
25 апр 21, 22:44    [22314093]     Ответить | Цитировать Сообщить модератору
 Re: из БД с cl8mswin1251 в БД с AL32UTF8 через ODBC получаеются кракозябры  [new]
Правильный Вася
Member

Откуда:
Сообщений: 434
receiver
попытки изменить командой NLS_LANG на уровне ОС
И где прописывали эту команду?
Обычно такие попытки приводят к установке переменной только для текущей сессии CommandShell, в которой и устанавливали, на остальные программы это не влияет.
25 апр 21, 22:56    [22314099]     Ответить | Цитировать Сообщить модератору
 Re: из БД с cl8mswin1251 в БД с AL32UTF8 через ODBC получаеются кракозябры  [new]
receiver
Member

Откуда:
Сообщений: 289
мой удаленный коллега выполнил это действие.
прислал фотку, но из-за плохого качества я понял,
что меняет он только для себя.
Уточню завтра, напишу, потому как может кому-то будет полезно.

да, и еще мне было не понятно - до изменения NLS_LANG,
запрос
select CLIENT_CHARSET from v$session_connect_info
возвращал для этого пользователя UTF16.
у нас везде прописано или cl8mswin1251 или юникод AL32UTF8.

откуда взялось это UTF16 мне не понятно.
26 апр 21, 00:10    [22314135]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить