Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / UTF-8 to ANSI / 18 сообщений из 18, страница 1 из 1
05.12.2017, 16:46
    #39564563
Бакыт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTF-8 to ANSI
здравствуйте,
как выгружаемый файл сохранить в кодировке 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
05.12.2017, 16:53
    #39564568
Бакыт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTF-8 to ANSI
еще момент когда применяю
Код: 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
05.12.2017, 17:13
    #39564580
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTF-8 to ANSI
Есть два варианта обозначения конца строки (EBCDIC, старые макинтошы и print formatter MultiEdit - не рассматриваем):
1. "юниксоидный" - одиночный перевод строки (LF);
2. "канонический" - пара CRLF (в этом порядке).
Любая система может "что-то сделать" с "несистемным" вариантом конца строки. Например, "юниксоидные" могут интерпретировать CRLF как LFLF.
Поэтому определяемся с вариантом исходя из требований ("пожеланий") целевой системы, для которой готовится файл.

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


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

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

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

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

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

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

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
06.12.2017, 13:26
    #39565027
Бакыт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTF-8 to ANSI
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
06.12.2017, 13:28
    #39565029
Бакыт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTF-8 to ANSI
делаю
Код: plsql
1.
2.
CONVERT('СТРОКА','CL8MSWIN1251','RU8PC866' )
from dual


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


кодировка ANSI только теперь буквы "кряказяба"
Ждал какого-то другого результата от двойной перекодировки?
...
Рейтинг: 0 / 0
06.12.2017, 18:36
    #39565351
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTF-8 to ANSI
Попытался поискать определения термина "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
06.12.2017, 18:49
    #39565360
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTF-8 to ANSI
Leonid KudryavtsevПопытался поискать определения термина "ANSI codepage".В MSDN не пробовали заглядывать?
...
Рейтинг: 0 / 0
06.12.2017, 18:56
    #39565365
Бакыт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTF-8 to ANSI
пока незнаю как реализовать выгрузку сразу в ANSI , решил использовать вот эту утилитку http://www.softportal.com/get-21021-konverter-ansiutf-8.html
...
Рейтинг: 0 / 0
06.12.2017, 20:07
    #39565397
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTF-8 to ANSI
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
06.12.2017, 23:18
    #39565460
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTF-8 to ANSI
Leonid KudryavtsevКакое отношение к ним имеет ANSIНасколько я помню историю, ANSI (и не только он) не рекомендовал, например, использовать первые тридцать два кода из диапазона 128-159. CP1251 (ANSI) эту рекомендацию соблюдает, CP866 (OEM) - нет.
...
Рейтинг: 0 / 0
07.12.2017, 08:27
    #39565528
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTF-8 to ANSI
Бакытпока незнаю как реализовать выгрузку сразу в ANSI , решил использовать вот эту утилитку http://www.softportal.com/get-21021-konverter-ansiutf-8.html Да что за инструмент этот ваш оракл, если не поддерживает выгрузки в различных кодировках и приходится использовать сторонние приблуды? А еще промышленной бд зовется.
...
Рейтинг: 0 / 0
07.12.2017, 15:20
    #39565948
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTF-8 to ANSI
Возвращаясь к первым двум вопросам:

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

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

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

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

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

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


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