powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проблема с кодировкой при передаче данных
25 сообщений из 43, страница 1 из 2
Проблема с кодировкой при передаче данных
    #39457833
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Есть БД 11.2.0.3 с кодировкой Cl8NSWIN1251, в ней содержатся данные на русском и английском языке.
Запускается ETL-процесс, переносящий некоторые данные в другую схему той же БД.
После отработки ETL-процесса в новой схеме получаем кракозябры вместо русских символов.

Если во время работы етл-процесса выставить NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251, то в кракозябрах преобладают знаки вопросов.

Если выставить NLS_LANG=RUSSIAN_CIS.CL8MSWIN1251, то в кракозябрах преобладают символы типа A?A?A?A«A?A¤A?A?A?A°A?A?A?A?
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39457836
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39457844
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sec0nd,

а попробуй из cmd
C:\>SET NLS_LANG=RUSSIAN_CIS.CL8MSWIN1251
C:\>chcp 1251
C:\>sqlplus
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39457845
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXL,

у меня линукс.

Попробовал из консоли, результат тот же.
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39457847
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sec0nd,

Чтобы ни у кого не было сомнений, покажи результат запроса
Код: plsql
1.
2.
3.
select * 
from nls_database_parameters
where parameter like '%CHARACTERSET';
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39457854
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,

Код: plsql
1.
2.
3.
4.
PARAMETER                      VALUE
------------------------------ ----------------------------------------
NLS_CHARACTERSET               CL8MSWIN1251
NLS_NCHAR_CHARACTERSET         AL16UTF16
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39457856
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю попробовать в UTF-8 теперь.
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39457861
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sec0nd,

А теперь давай посмотрим на данные исходной схемы. Можешь привести скриншоты своего SQL Developer-а, например.
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39457862
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sec0ndMaximaXXL,

у меня линукс.

Попробовал из консоли, результат тот же.

Код: plsql
1.
select parameter||'='||value as info from nls_database_parameters;



Фонт?
преобразование в ssh?
текущие установки сессии unix:
locale
Что покажет ascii таблица

Код: plsql
1.
awk 'BEGIN{for(i=32;i<256;i+=16){for(j=0;j<16;j++)printf("%c",i+j);print ""}}'



SQL.ru -> FAQ -> Oracle -> CodePage, NLS_LANG: решение проблем с отображением сообщений на русском языке
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39457870
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sec0ndЗапускается ETL-процесс
Подробнее
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39457873
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadsec0nd,

А теперь давай посмотрим на данные исходной схемы. Можешь привести скриншоты своего SQL Developer-а, например.
Скриншонты чего именно?
Результатов запросов, возвращающих данные на русском языке?

Да, забыл добавить важную деталь - после отработки етл-процесса часть русских данных попадает в новую схему нормально, а часть - кракозябрами.
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39457877
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Lejnin,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
SQL> select parameter||'='||value as info from nls_database_parameters;

INFO
-----------------------------------------------------------------------
NLS_LANGUAGE=AMERICAN
NLS_TERRITORY=AMERICA
NLS_CURRENCY=$
NLS_ISO_CURRENCY=AMERICA
NLS_NUMERIC_CHARACTERS=.,
NLS_CHARACTERSET=CL8MSWIN1251
NLS_CALENDAR=GREGORIAN
NLS_DATE_FORMAT=DD-MON-RR
NLS_DATE_LANGUAGE=AMERICAN
NLS_SORT=BINARY
NLS_TIME_FORMAT=HH.MI.SSXFF AM

INFO
-----------------------------------------------------------------------
NLS_TIMESTAMP_FORMAT=DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT=HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT=DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY=$
NLS_COMP=BINARY
NLS_LENGTH_SEMANTICS=BYTE
NLS_NCHAR_CONV_EXCP=FALSE
NLS_NCHAR_CHARACTERSET=AL16UTF16
NLS_RDBMS_VERSION=11.2.0.4.0

20 rows selected.




Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
$ awk 'BEGIN{for(i=32;i<256;i+=16){for(j=0;j<16;j++)printf("%c",i+j);print ""}}'
 !"#$%&'()*+,-./
0123456789:;<=>?
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
`abcdefghijklmno
pqrstuvwxyz{|}
&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;
&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;
&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;
&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;
&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;
&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;
&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;
&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;&#9618;
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39457879
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sec0ndРезультатов запросов, возвращающих данные на русском языке?Да, ты верно меня понял.sec0ndДа, забыл добавить важную деталь - после отработки етл-процесса часть русских данных попадает в новую схему нормально, а часть - кракозябрами.Но в контексте горячих новостей, похоже, это теряет смысл.
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39457882
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envsec0ndЗапускается ETL-процесс
Подробнее
Подробнее не могу.
Етл-процесс оракловый, не самописный.
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39457890
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще проблема в том, что etl-процесс огроменный, и найти процедуру(ры), вставляющие данные именно в эти кракозябные таблицы не представляется возможным.
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39457894
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sec0ndА еще проблема в том, что etl-процесс огроменный, и найти процедуру(ры), вставляющие данные именно в эти кракозябные таблицы не представляется возможным.Ну и забей тогда. Пусть работает как работает.
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39457900
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот еще что заметил: те запросы, которые в sql developer возвращают нормальные русские символы, через sql plus возвращают вот что:

Етл-процесс как раз использует sqlplus для передачи данных.
Получается, у меня с sqlplus что-то не так? Что может на него влиять кроме locale и NLS_LANG?
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39457906
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Lejnin,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
$ locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39457911
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sec0ndВот еще что заметил: те запросы, которые в sql developer возвращают нормальные русские символы, через sql plus возвращают вот что:

Етл-процесс как раз использует sqlplus для передачи данных.
Получается, у меня с sqlplus что-то не так? Что может на него влиять кроме locale и NLS_LANG?

Изменил кодировку в настройках ssh-клиента, теперь в консоли русские данные тоже отображаются нормально.
Неужели кривая кодировка ssh-клиента может влиять на формат данных в етл-процессе?
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39457924
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sec0ndЕтл-процесс оракловый, не самописный.
sec0ndЕтл-процесс как раз использует sqlplus для передачи данных.
sec0ndetl-процесс огроменный

Какой инструмент используется для создания и запуска etl-процесса?

sec0ndНеужели кривая кодировка ssh-клиента может влиять на формат данных в етл-процессе
А если подумать головой?
У тебя судя по обрывкам описания процесса так или иначе используется файловая система. В которорую одна часть процесса с каким-то своим env пишет, а потом sqlplus со своим env это читает и пишет в базу.
Дай-ка подумать, что тут может быть не так с кодировками, если у тебя файл пишется на *nix, где дефолт обычно юникод, а потом оттуда читается в базу с cp1251 с хрен знает какой интерпретацией кодировки входных данных?
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39457947
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envА если подумать головой?
У тебя судя по обрывкам описания процесса так или иначе используется файловая система. В которорую одна часть процесса с каким-то своим env пишет, а потом sqlplus со своим env это читает и пишет в базу.
Дай-ка подумать, что тут может быть не так с кодировками, если у тебя файл пишется на *nix, где дефолт обычно юникод, а потом оттуда читается в базу с cp1251 с хрен знает какой интерпретацией кодировки входных данных?
Уже понял, запустил етл-процесс и жду результатов.
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39457953
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sec0ndА еще проблема в том, что etl-процесс огроменный, и найти процедуру(ры), вставляющие данные именно в эти кракозябные таблицы не представляется возможным.
ETL работает скорее всего на java в UTF8
настройка может быть где-то внутри кишок (как правило в виде параметров запуска java)
Либо браться из настроек системы
не надо ему мешать, настрой окружение на en_US.UTF8

для sqlplus в консоле настрой NLS_LANG=AMERICAN_AMERICA.UTF8
и попробуй выполни запрос
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39458038
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Lejninsec0ndА еще проблема в том, что etl-процесс огроменный, и найти процедуру(ры), вставляющие данные именно в эти кракозябные таблицы не представляется возможным.
ETL работает скорее всего на java в UTF8
настройка может быть где-то внутри кишок (как правило в виде параметров запуска java)
Либо браться из настроек системы
не надо ему мешать, настрой окружение на en_US.UTF8

для sqlplus в консоле настрой NLS_LANG=AMERICAN_AMERICA.UTF8
и попробуй выполни запрос

Такое окружение было в самом начале. Не взлетело.
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39458108
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envКакой инструмент используется для создания и запуска etl-процесса?



sh-ник
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39458187
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sec0nd,
Что запускает shell script
Как настраивал NLS?
Может export переменной не сделал
...
Рейтинг: 0 / 0
25 сообщений из 43, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проблема с кодировкой при передаче данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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