powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / UTF-8 to ANSI
18 сообщений из 18, страница 1 из 1
UTF-8 to ANSI
    #39564563
Бакыт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
здравствуйте,
как выгружаемый файл сохранить в кодировке ANSI место UTF8
Код: 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.
30.
31.
PROCEDURE Ibank_txt IS
 
BEGIN
 owa_util.mime_header( 'text/csv', FALSE );  ---text/plain
htp.p('Content-Disposition: attachment; filename="ibank.txt"');
owa_util.http_header_close;

 htp.print('1CClientBankExchange' || chr(13) || chr(10));
 htp.print('ВерсияФормата=1.01' || chr(13) || chr(10));
 htp.print('Кодировка=Windows' || chr(13) || chr(10));
 htp.print('СекцияДокумент=Платежное поручение' || chr(13) || chr(10));
 htp.print('Номер='||i.documentnumber || chr(13) || chr(10));
 htp.print('Дата='||to_char(i.value_date,'DD.MM.YY')|| chr(13) || chr(10));
 htp.print('Сумма='||i.amount || chr(13) || chr(10));
 htp.print('ПлательщикСчет='||i.sender_accountnumber || chr(13) || chr(10));
 htp.print('ПлательщикИНН=000000000' ||chr(13) || chr(10));
 htp.print('ПлательщикОКПО=0000000' || chr(13) || chr(10));
 htp.print('ПлательщикРег.№СФ=000000000' || chr(13) || chr(10));
 htp.print('Плательщик1=РОГА ИКОПЫТА' || chr(13) || chr(10));
 htp.print('ПлательщикБИК='||i.sender_bic || chr(13) || chr(10));
 htp.print('ПолучательСчет='||i.benef_accountnumber || chr(13) || chr(10));
 htp.print('ПолучательИНН='||i.inn || chr(13) || chr(10));
 htp.print('Получатель1='||i.client_short_name || chr(13) || chr(10));
 htp.print('ПолучательБИК='||i.benef_bic || chr(13) || chr(10));
 htp.print('СрокПлатежа='||to_char(i.value_date,'DD.MM.YY') || chr(13) || chr(10));
 htp.print('НазначениеПлатежа='||i.nomination || chr(13) || chr(10));
 htp.print('КодПлатежа='||i.knp_code || chr(13) || chr(10));
 htp.print('КонецДокумента'|| chr(13) || chr(10));

htmldb_application.g_unrecoverable_error := true;
END;
...
Рейтинг: 0 / 0
UTF-8 to ANSI
    #39564568
Бакыт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще момент когда применяю
Код: plsql
1.
|| chr(13) || chr(10))


между строками появляется пустая строка
если убираю то, с новой строки не начинается
надо сформировать вот в таком формате
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
1CClientBankExchange
ВерсияФормата=1.01
Кодировка=Windows
СекцияДокумент=Платежное поручение
Номер=12
Дата=01.12.17
Сумма=15000
ПлательщикСчет=99999999
ПлательщикИНН=0999999999
ПлательщикОКПО=21999999
ПлательщикРег.№СФ=999999
Плательщик1=РОГА КОПЫТА
ПлательщикБИК=111111
ПолучательСчет=1111111111
ПолучательИНН=111111111
Получатель1=ПЕТРОВ
ПолучательБИК=12212
СрокПлатежа=01.12.17
НазначениеПлатежа=Перечисляется кредит согл КД 333 прот 333 от 24 11 17 Распр 06 23 149 от 30 11 17г
КодПлатежа=54545455
КонецДокумента
...
Рейтинг: 0 / 0
UTF-8 to ANSI
    #39564580
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть два варианта обозначения конца строки (EBCDIC, старые макинтошы и print formatter MultiEdit - не рассматриваем):
1. "юниксоидный" - одиночный перевод строки (LF);
2. "канонический" - пара CRLF (в этом порядке).
Любая система может "что-то сделать" с "несистемным" вариантом конца строки. Например, "юниксоидные" могут интерпретировать CRLF как LFLF.
Поэтому определяемся с вариантом исходя из требований ("пожеланий") целевой системы, для которой готовится файл.

P.S. Чтобы не раздражало при просмотре - делаем настройку софта, если она есть или используем другой просмотровщик.
...
Рейтинг: 0 / 0
UTF-8 to ANSI
    #39564591
Бакыт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
убрал
Код: plsql
1.
|| chr(10)


исчезла пустая строка
...
Рейтинг: 0 / 0
UTF-8 to ANSI
    #39564613
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бакытеще момент когда применяю
Код: plsql
1.
|| chr(13) || chr(10))

Уточняй у стороны-приемника какой разделитель строк она ожидает. Вынеси выделенный фрагмент в переменную/константу/параметр. Для преобразования кодировок есть dbms_lob.converttoblob и utl_i18n.string_to_raw.
...
Рейтинг: 0 / 0
UTF-8 to ANSI
    #39564678
Бакыт,

Мне кажется, было бы лучше убрать chr(13) и оставить chr(10)

IMHO & AFAIK
...
Рейтинг: 0 / 0
UTF-8 to ANSI
    #39564706
Бакыт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонид_КудрявцевБакыт,

Мне кажется, было бы лучше убрать chr(13) и оставить chr(10)

IMHO & AFAIK
chr(10) не реагирует
...
Рейтинг: 0 / 0
UTF-8 to ANSI
    #39564985
htp.print
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
описание функции поцмотреть не судьба?

PRINT Procedures

These procedures generate the specified parameter as a string terminated with the \n newline character. The PRN Procedures performs the same operation but does not terminate with a newline character.
...
Рейтинг: 0 / 0
UTF-8 to ANSI
    #39565027
Бакыт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
htp.printописание функции поцмотреть не судьба?

PRINT Procedures

These procedures generate the specified parameter as a string terminated with the \n newline character. The PRN Procedures performs the same operation but does not terminate with a newline character.
что имеете ввиду?
...
Рейтинг: 0 / 0
UTF-8 to ANSI
    #39565029
Бакыт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делаю
Код: plsql
1.
2.
CONVERT('СТРОКА','CL8MSWIN1251','RU8PC866' )
from dual


кодировка ANSI только теперь буквы "кряказяба"
...
Рейтинг: 0 / 0
UTF-8 to ANSI
    #39565242
Кодеррр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бакытделаю
Код: plsql
1.
2.
CONVERT('СТРОКА','CL8MSWIN1251','RU8PC866' )
from dual


кодировка ANSI только теперь буквы "кряказяба"
Ждал какого-то другого результата от двойной перекодировки?
...
Рейтинг: 0 / 0
UTF-8 to ANSI
    #39565351
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попытался поискать определения термина "ANSI codepage". Сложилось такое чувство, что за исключением 7-битной кодировки, вроде к существующим кодировкам ANSI имеет отношение чуть меньше, чем никакое

Но в 90-ые ANSI кодировкой для России называли исключительно 1251
А 866 кодировку называли OEM )))

IMHO по ощущениям после прочтения англоязычной Wiki )))
и AFAIK по программированию в 90'ые )))

WIKIThe phrase ANSI character set has no official meaning and has been used to refer to the following, among other things:
Windows code pages, a collection of 8-bit character sets compatible with ASCII but incompatible with each other, especially those code pages that are partly compatible with ISO-8859, most commonly Windows Latin 1
ASCII, a 7-bit character set. (Very rarely.)
ANSEL, the American National Standard for Extended Latin Alphabet Coded Character Set. (Very rarely.)
ISO-8859, a collection of 8-bit character sets compatible with ASCII. (Very rarely.)
...
Рейтинг: 0 / 0
UTF-8 to ANSI
    #39565360
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevПопытался поискать определения термина "ANSI codepage".В MSDN не пробовали заглядывать?
...
Рейтинг: 0 / 0
UTF-8 to ANSI
    #39565365
Бакыт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пока незнаю как реализовать выгрузку сразу в ANSI , решил использовать вот эту утилитку http://www.softportal.com/get-21021-konverter-ansiutf-8.html
...
Рейтинг: 0 / 0
UTF-8 to ANSI
    #39565397
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov MSDN не пробовали заглядывать?
там тоже самое )))

866 cp866 OEM Russian; Cyrillic (DOS)
1251 windows-1251 ANSI Cyrillic; Cyrillic (Windows)

и хорошо согласуется с англоязычной викой "Windows code pages, a collection of 8-bit character sets compatible with ASCII but incompatible with each other, especially those code pages that are partly compatible with ISO-8859, most commonly Windows Latin 1"

Какое отношение к ним имеет ANSI ( https://www.ansi.org/) совершенно не понятно.
...
Рейтинг: 0 / 0
UTF-8 to ANSI
    #39565460
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevКакое отношение к ним имеет ANSIНасколько я помню историю, ANSI (и не только он) не рекомендовал, например, использовать первые тридцать два кода из диапазона 128-159. CP1251 (ANSI) эту рекомендацию соблюдает, CP866 (OEM) - нет.
...
Рейтинг: 0 / 0
UTF-8 to ANSI
    #39565528
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бакытпока незнаю как реализовать выгрузку сразу в ANSI , решил использовать вот эту утилитку http://www.softportal.com/get-21021-konverter-ansiutf-8.html Да что за инструмент этот ваш оракл, если не поддерживает выгрузки в различных кодировках и приходится использовать сторонние приблуды? А еще промышленной бд зовется.
...
Рейтинг: 0 / 0
UTF-8 to ANSI
    #39565948
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возвращаясь к первым двум вопросам:

1. Кодировка:

1.1. ПРАВИЛЬНОЕ использование ф-ции CONVERT, скорее всего ( 95% ), спасет гиганта мысли. Какие параметры нужно указывать, зависит от кодировки используемой в Вашей БД

1.2. Желательно указывать правильный тип и кодировку в Mime Type (третий параметр в owa_util.mime_header )

2. Перевод строки

21010482
Если Вы сами формируете переводы строки, но лучше использовать ф-цию которые ничего не пытаются добавлять. А то у Вас получается масло масленное. Сначала Вы добавили переводы строки, которые считаете правильными, а потом еще Oracle добавил свои. Что получилось в итоге, понять достаточно сложно )))

IMHO
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / UTF-8 to ANSI
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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