Конвертация RTF в UTF-8, например.

paag5
Дата: 08.10.2015 17:13:17
День добрый.

Создаю отчет по системам в sap business objects на базе данных из базы ORACLE.

Суть проблемы в следующем:
Описания систем, BDE и линков лежат в репозитории в полях varchar2 в текстовом виде но в формате RTF. Необходимо перекодировать RTF в читаемый формат, например в UTF-8, что ли.

Что-то даже идей никаких, с утра из гугла не вылажу.

Может подскажет кто-нибудь?

P.S. Варианты со временными таблицами не подойдут.


Заранее спасибо.
hardhouse
Дата: 08.10.2015 17:20:42
paag5
Дата: 15.10.2015 11:43:49
Ковырялся, ковырялся, но так и не наковырял.
В RTF присутствует русский текст, который необходимо перекодировать.

Этот скрипт, что указан выше, только обрезает лишние символы, не перекодируя информацию.

Собственно, строка
автор
{\rtf1\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}}
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\lang1033\f0\fs20 ATM Controller\par
}

логично превращается в
автор
ATM Controller

и все прекрасно, но со строкой
автор
{\rtf1\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fnil\fcharset204 Microsoft Sans Serif;}{\f1\fnil\fcharset0 Microsoft Sans Serif;}}
{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\f0\fs20\'d5\'f0\'e0\'ed\'e8\'eb\'e8\'f9\'e5 \'e4\'e0\'ed\'ed\'fb\'f5 \'c1\'e0\'ed\'ea\'e0\lang1033\f1 (Data Warehouse)\par
}

Такое не прокатит и она превратится в
автор
d5f0e0ede8ebe8f9e5 e4e0ededfbf5 c1e0edeae0 (Data Warehouse)


Интересует не просто обрезание символов, а именно перекодировка.
я сделаю это
Дата: 15.10.2015 12:00:19
paag5,

$999
paag5
Дата: 15.10.2015 12:48:05
я сделаю это,
за $999 я воспользуюсь replace все 66 раз на каждый символ, но за такое нужно по рукам давать.
hardhouse
Дата: 15.10.2015 15:12:12
лучше через TRANSLATE

а почему вариант с временной таблицей не подходит? тогда бы можно было воспользоваться ctx_doc.filter
paag5
Дата: 15.10.2015 15:35:43
hardhouse, вариант с временной таблицей не подойдет, так как функция не поддерживается ПО, из которого будет запускаться скрипт.

TRANSLATE тоже не получится использовать, так как в формуле TRANSLATE(str1, SRC, DEST) количество символов SRC и DEST должно быть одинаковым, а в нашем случае символов в SRC будет в два раза больше.
paag5
Дата: 15.10.2015 15:39:22
hardhouse, хотя, если честно, то не знаю. Нужно протестить. То, что ПО не сможет создать временную таблицу в БД - факт. Но вот результаты запросов вроде хранит внутри временных таблиц внутри себя, потому может быть и попытаться.
hardhouse
Дата: 15.10.2015 15:49:01
1. так можно же заранее табличку-то создать и навесить на нее тот "хитрый" индекс, а результаты ctx_doc.filter класть в соседнее поле этой же таблицы
2. создать индекс непосредственно на рабочей таблице. результаты ctx_doc.filter применить в той же или заранее созданной другой табличке
3. в отчете читать данные из нужного столбца


ps а про translate да, что-то протупил:)
anvano
Дата: 15.10.2015 23:45:14
Есть freeware консольная утилита под линукс.
Называется TED она умеет перекодировать RFT в частности в TXT.
На выходе получается plain русский текст, уже раскодированный.

http://www.nllgg.nl/Ted/

Есть ли под винду версия - хз