CftClub.ru
Клуб специалистов ЦФТ-Банк

Крякозабры

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
cool_dude
Участник - экстремал


Вступление в Клуб: 05.02.2013
СообщениеПт Дек 01, 2017 11:00   Крякозабры Ответить с цитатой
Полезность: Нет оценки
Здравствуйте, уважаемые форумчане.
Создал операцию для выгрузки данных из таблицы в txt документ. Данные выгружаются, файл создается, но после выгрузки в файле, ФИО пользователей выходят крякообразными символами. т.е. если например ФИО - Иванов Иван Иванович, то на файле выгружается как +ванов _ван °ванович и т.п. Как решить эту проблему? Ниже приведен кусок кода:

f_handler integer;
str_ext varchar2(3);
str_txt varchar2(200);
type Q_1 is
select u(u.[NAME] : fsc
,u.[USERNAME] : cur
,u.[DEPART].[CODE] :bsc
)
in ::[USER]
where u.[DEPART].[code] like '001%';

cur1 Q_1;

Procedure export_data(P_EXT varchar2(3), df_name varchar2(50))
is
Begin
--debug_pipe(&METHOD$||': Процедура обработки запроса с использованием статического курсора', 0);
cur1.open;

case P_EXT of
:'txt': f_handler := stdio.open(src_path,df_name,'W');
End;
--debug_pipe(TB$||'...Цикл по курсору, чтение данных', 0);
for c in 1..100000
Loop
cur1.fetch;
If cur1.found Then
If P_EXT = 'txt' Then
str_txt := cur1.fsc
||' | '||cur1.cur
||' | '||cur1.bsc;
--debug_pipe (cur1.fsc);
stdio.PUT_LINE(f_handler, str_txt, false, stdio.WINTEXT);
End If;
End Loop;
case P_EXT of
:'txt': stdio.close(f_handler);
End;
cur1.close;

Exception When OTHERS Then
--debug_pipe('Ошибка работы с курсором', 0);
If cur1.isopen Then
cur1.close;
End If;
End;

С латинскими буквами проблем нет. Они выгружаются как есть.
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеПт Дек 01, 2017 12:39    Ответить с цитатой
Полезность: Нет оценки
1. На форуме есть тег форматирования кода
2. что значит "на файле выгружается"? Чем смотрите текстовый файл?
3. stdio.PUT_LINE(f_handler, str_txt, false, stdio.WINTEXT); - значит win кодировка
cool_dude
Участник - экстремал


Вступление в Клуб: 05.02.2013
СообщениеПт Дек 01, 2017 12:52    Ответить с цитатой
Полезность: Нет оценки
Volod пишет:
1. На форуме есть тег форматирования кода
2. что значит "на файле выгружается"? Чем смотрите текстовый файл?
3. stdio.PUT_LINE(f_handler, str_txt, false, stdio.WINTEXT); - значит win кодировка

1. Вы не могли бы ссылку отправить?
2. Выгруженный файл смотрю через FAR в WIN кодировке. Через блокнот тоже самое.
3. Да, WIN кодировка. Попробовал в DOS кодировке. Проблема та же осталась + нормальные слова тоже превратились в крякозябры Very Happy
cool_dude
Участник - экстремал


Вступление в Клуб: 05.02.2013
СообщениеПт Дек 01, 2017 13:08    Ответить с цитатой
Полезность: Нет оценки
Нашел решение. Very Happy
вместо
stdio.PUT_LINE(f_handler, str_txt, false, stdio.WINTEXT);
поставил
вот это stdio.put_line(f_handler, str_txt, true, null, stdio.WINTEXT);

Забыл прописать один параметр.
Спасибо за отклик.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru