Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проблема с кодировкой при передаче данных / 25 сообщений из 43, страница 1 из 2
23.05.2017, 11:16
    #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
23.05.2017, 11:17
    #39457836
sec0nd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой при передаче данных
NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251
...
Рейтинг: 0 / 0
23.05.2017, 11:27
    #39457844
MaximaXXL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой при передаче данных
sec0nd,

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

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

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

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

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

А теперь давай посмотрим на данные исходной схемы. Можешь привести скриншоты своего SQL Developer-а, например.
...
Рейтинг: 0 / 0
23.05.2017, 11:41
    #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
23.05.2017, 11:45
    #39457870
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой при передаче данных
sec0ndЗапускается ETL-процесс
Подробнее
...
Рейтинг: 0 / 0
23.05.2017, 11:46
    #39457873
sec0nd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой при передаче данных
AmKadsec0nd,

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

Да, забыл добавить важную деталь - после отработки етл-процесса часть русских данных попадает в новую схему нормально, а часть - кракозябрами.
...
Рейтинг: 0 / 0
23.05.2017, 11:47
    #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
23.05.2017, 11:48
    #39457879
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой при передаче данных
sec0ndРезультатов запросов, возвращающих данные на русском языке?Да, ты верно меня понял.sec0ndДа, забыл добавить важную деталь - после отработки етл-процесса часть русских данных попадает в новую схему нормально, а часть - кракозябрами.Но в контексте горячих новостей, похоже, это теряет смысл.
...
Рейтинг: 0 / 0
23.05.2017, 11:49
    #39457882
sec0nd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой при передаче данных
envsec0ndЗапускается ETL-процесс
Подробнее
Подробнее не могу.
Етл-процесс оракловый, не самописный.
...
Рейтинг: 0 / 0
23.05.2017, 11:52
    #39457890
sec0nd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой при передаче данных
А еще проблема в том, что etl-процесс огроменный, и найти процедуру(ры), вставляющие данные именно в эти кракозябные таблицы не представляется возможным.
...
Рейтинг: 0 / 0
23.05.2017, 11:55
    #39457894
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой при передаче данных
sec0ndА еще проблема в том, что etl-процесс огроменный, и найти процедуру(ры), вставляющие данные именно в эти кракозябные таблицы не представляется возможным.Ну и забей тогда. Пусть работает как работает.
...
Рейтинг: 0 / 0
23.05.2017, 11:58
    #39457900
sec0nd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой при передаче данных
Вот еще что заметил: те запросы, которые в sql developer возвращают нормальные русские символы, через sql plus возвращают вот что:

Етл-процесс как раз использует sqlplus для передачи данных.
Получается, у меня с sqlplus что-то не так? Что может на него влиять кроме locale и NLS_LANG?
...
Рейтинг: 0 / 0
23.05.2017, 12:00
    #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
23.05.2017, 12:03
    #39457911
sec0nd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой при передаче данных
sec0ndВот еще что заметил: те запросы, которые в sql developer возвращают нормальные русские символы, через sql plus возвращают вот что:

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

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

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

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

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

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

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



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


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