powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проблема с кодировкой при передаче данных
43 сообщений из 43, показаны все 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
Проблема с кодировкой при передаче данных
    #39458197
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Lejninsec0nd,
Что запускает shell script
Как настраивал NLS?
Может export переменной не сделал

Shell-скрипт задает переменные java, коннект к БД, а потом дергает sql скрипты по списку.

NLS настраивал export NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251 (ну пробовал и RUSSIAN_CIS.CL8MSWIN1251)

В старых версиях этого всегда хватало.
А в новой версии не работает...
При этом, тот факт что в конечную схему данные попадают в некоторые таблицы в нормальном виде, а в другие таблицы кракозябрами, заставляет меня задуматься о том, что новая версия криво адаптирована под RU.

Сейчас опять установил английскую локаль в ОС и создал БД с кодировкой UTF-8
Если не взлетит, значит не судьба
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39458219
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sec0nd,

Может всё-таки уже назовёшь свой "не самописный" ETL-инструмент который запускается sh-скриптом с явным прописыванием локалей и строк соединения?

Заодно проверь, что все запускается от одного пользователя с одним .profile, нет явных sudo su -l и подобного.
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39458228
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sec0ndпопадают в некоторые таблицы в нормальном виде
ddl таблиц заодно проверь, может у тебя там и так unicode
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39458232
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как правило Java-приложения через JDBC работают всегда в юникоде независимо от NLS_LANG
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39458243
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envsec0nd,

Может всё-таки уже назовёшь свой "не самописный" ETL-инструмент который запускается sh-скриптом с явным прописыванием локалей и строк соединения?

Заодно проверь, что все запускается от одного пользователя с одним .profile, нет явных sudo su -l и подобного.
Ок, это staretl.
Продукт из категории Primavera P6 Analytics.

Сейчас я пытаюсь понять следующее: почему при запуске конфигуратора star окно gui показывает мне нормальные русские символы, но при прохождении конфигуратора в конфиге появляются кракозябры.
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39458245
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выше я показал как это выглядит в конфигураторе.
А вот так выглядит потом в файле properties:
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39458249
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При этом я пробовал английску и русскую локаль в системе, и для каждой из них пробовал NLS_LANG RUSSIAN_CIS.CL8MSWIN1251 и AMERICAN_AMERICA.CL8MSWIN1251
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39458252
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это проблемы приложения
Если JDBC с БД работает через юникод (и подвергается NLS-конвертации), то это не значит, что он плюет на LANG, LC_ALL и все остальное при работе с локальными файлами
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39458253
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в UTF-8 файл properties выглядит нормально... И почему же он тогда в БД кракозябрами попадает?
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39458254
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровЭто проблемы приложения
Если JDBC с БД работает через юникод (и подвергается NLS-конвертации), то это не значит, что он плюет на LANG, LC_ALL и все остальное при работе с локальными файлами
Не совсем понятно почему это тогда проблема приложения?
По вашим словам получается, что это проблема окружения.
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39458259
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну можно и так назвать -- проблема приложения в окружении
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39458283
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sec0nd,

А источником данных для ETL что является и как туда настроен доступ?
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39458287
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envsec0nd,

А источником данных для ETL что является и как туда настроен доступ?

Исходная схема в той же БД.

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

Т.е. сначала оно выгружается по варианту cp1251 => utf8, а потом пытается впихнуть это в cp1251?
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39458296
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут если и проблема, то в первой перекодировке
Потому как юникод JDBC вполне себе нормально перетранслируется в кодировку БД
...
Рейтинг: 0 / 0
Проблема с кодировкой при передаче данных
    #39458307
sec0nd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envsec0nd,

Т.е. сначала оно выгружается по варианту cp1251 => utf8, а потом пытается впихнуть это в cp1251?

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

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

Одинаковую кодировку должны иметь хранилище примаверы и база её репозитория.

У меня на тестовом стенде в любом случае все крутится на одной БД.
...
Рейтинг: 0 / 0
43 сообщений из 43, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проблема с кодировкой при передаче данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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