|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
Есть у меня c# функция, которая вынимает из RTF чистый текст. Есть такой текст в RTF The ü, ö, ç characters are displayed as ь, ц, з, "ш", "щ", "ы" Вот его внутренности {\rtf1\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fnil\fcharset0 Arial;}} {\colortbl ;\red0\green0\blue0;} \viewkind4\uc1\pard\cf1\fs24\par The \ldblquote\'fc\rdblquote , \ldblquote\'f6\rdblquote , \ldblquote\'e7\rdblquote characters are displayed as \ldblquoteᄀ?\rdblquote , \ldblquote႔?\rdblquote , \ldblquoteၹ?\rdblquote , "႖?", "႗?", "႙?"\par } Вопрос: Меняю пальцами ansicpg1251 на ansicpg1252 или ansicpg1253 но контрол в с++ показывает корректно текст, т.е. турецкие, русские буквы - все ок. Как понять это параметр ansicpg1251 ? он игнорируется полностью? Но если я регаирую на этот параметр, то естесвтенно вместо турецких символов будут русские или греческие. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2014, 14:33 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
Winnipuh, ..так символы же в Юникоде, если не ошибаюсь .. им пофиг ANSI ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2014, 14:53 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
carrotikWinnipuh, ..так символы же в Юникоде, если не ошибаюсь .. им пофиг ANSI Если я правильно понимаю такие "႖?" да, в юникоде, а такие "\'f6" ? Собственно в них и проблема в данном примере, т.е. как их интепретировать ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2014, 14:57 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
Winnipuh, русские - в юникоде - им похер установка codepage а вот с турецкими - сложнее. на показ влияет \fcharset чтоб избавиться от проблем - \ansicpg1251 указывай с \fcharset204 а чтоб наверняка - всё что не ASCII - пиши в юникоде ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2014, 14:59 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
ИзопропилWinnipuh, русские - в юникоде - им похер установка codepage а вот с турецкими - сложнее. на показ влияет \fcharset чтоб избавиться от проблем - \ansicpg1251 указывай с \fcharset204 а чтоб наверняка - всё что не ASCII - пиши в юникоде так проблема в том, что ртф пишется ms контролом в c++ приложении. Я туда не влезу. А у меня c# функция, которая читает ртф и выдает на выходе чистый текст. Вот она и срабатывает неправильно, т.е. реагирует по-честному на параметр ansicpg1251 или ansicpg1254 и в зависимости от него показывает то русские, то греческие символы и т.д.. а контрол игнорирует его и всегда показывает турецкие символы. Вопрос в том, когда этот параметр мне можно игнорировать в c#? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2014, 15:14 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
Winnipuhа контрол игнорирует его и всегда показывает турецкие символы. потому что \fcharset0 на выходе "ms контролом в c++ приложении" - кривой rtf, что здесь удивительного ? поправь \fcharset ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2014, 16:26 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
ИзопропилWinnipuhа контрол игнорирует его и всегда показывает турецкие символы. потому что \fcharset0 на выходе "ms контролом в c++ приложении" - кривой rtf, что здесь удивительного ? поправь \fcharset так не я его пишу, как его исправлю? это пишет майкрософтовский ричедит контрол, используемый в с++, но он то сам правильно показывает символы. Вот я и пытаюсь понять, как мне разбирать такой ртф. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2014, 16:29 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
Winnipuh, ...да перепишите в своей функции словарь (под набор 1251) просто вручную ... туповато, конечно, но у меня так вб-скрипт работает, который ртф-ки парсит ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2014, 16:29 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
Winnipuh, ...или просто replace сделайте fcharset0 на fcharset204, прежде чем на вход функции подавать ... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2014, 16:33 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
carrotikWinnipuh, ...или просто replace сделайте fcharset0 на fcharset204, прежде чем на вход функции подавать ... сделал, не помогло. Функция кстати не отображает, а разбирает ртф и вынимает текст. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2014, 17:09 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
WinnipuhcarrotikWinnipuh, ...или просто replace сделайте fcharset0 на fcharset204, прежде чем на вход функции подавать ... сделал, не помогло. Функция кстати не отображает, а разбирает ртф и вынимает текст. ...ну, значит, руками пишите массив и переподставляйте ... вот так у меня в скрипте работает, на VBS ... понятно, что велосипед наколенный, но работает Код: vbnet 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2014, 17:15 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
Исходя из того, что написано здесь я вроде бы поступаю правильно http://habrahabr.ru/post/70119/ Итак, в rtf'е есть возможность использования второй половины таблицы ASCII, та что от 128 и выше. С учётом текущей кодировки (выше управляющее слово \ansicpg), конечно же. Для этого в RTF была введена последовательность вида \'hh, где hh — это двоичный hex-код символа из таблицы ASCII. т.е. я использую эту кодовую страницу и получаю вместо турецких - русские символы. А ms контрол показывает турецкие, что и хотелось бы мне поулчить. Какая логика у них? в этом вопрос... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2014, 17:45 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
WinnipuhИсходя из того, что написано здесь я вроде бы поступаю правильно http://habrahabr.ru/post/70119/ Итак, в rtf'е есть возможность использования второй половины таблицы ASCII, та что от 128 и выше. С учётом текущей кодировки (выше управляющее слово \ansicpg), конечно же. Для этого в RTF была введена последовательность вида \'hh, где hh — это двоичный hex-код символа из таблицы ASCII. т.е. я использую эту кодовую страницу и получаю вместо турецких - русские символы. А ms контрол показывает турецкие, что и хотелось бы мне поулчить. Какая логика у них? в этом вопрос... ... конвертируйте в Юникод, у вас же на компьютере стоит codepage 1251 по умолчанию? .. вот он и показывает .. На турецком компе все было бы нормально ... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2014, 17:59 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
WinnipuhКакая логика у них? в этом вопрос никакой, просто ошибки, ибо проблемы негров(кодировок отличных от Latin-1) шерифа не волнуют ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2014, 18:05 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
Winnipuh, а ты не пробовал использовать стандартный RichTextBox для чтения текста? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2014, 23:12 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
bazileWinnipuh, а ты не пробовал использовать стандартный RichTextBox для чтения текста? пробовал, я бы и рад использовать и забыть, но в этом случае не получается. Эта функция у меня в SQLCLR сидит, в базе. И из полей , содеращих ртф вынимает чистый текст для индексирования ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2014, 12:28 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
WinnipuhИ из полей , содеращих ртф вынимает чистый текст для индексирования в этом случае - всё равно как показывается, анализируй \ansicpg ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2014, 12:48 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
WinnipuhbazileWinnipuh, а ты не пробовал использовать стандартный RichTextBox для чтения текста? пробовал, я бы и рад использовать и забыть, но в этом случае не получается. Эта функция у меня в SQLCLR сидит, в базе. И из полей , содеращих ртф вынимает чистый текст для индексирования ...так тем более, сделайте перед insert-ом replace HEX на Юникод, и пусть так и лежит ... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2014, 13:04 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
Winnipuh, если RichTextBox не получится использовать, то может взять готовую библиотеку ( раз , два )? У них открытые исходники так что можно легко встроить их прямо в в твое приложение. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2014, 16:43 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
bazileWinnipuh, если RichTextBox не получится использовать, то может взять готовую библиотеку ( раз , два )? У них открытые исходники так что можно легко встроить их прямо в в твое приложение. недоделано там для таких случаев, так же для RTL текстов и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2014, 19:23 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
Winnipuhнедоделано там для таких случаев, так же для RTL текстов и т.д. ну тогда спецификации rtf в руки и установить адекватную цену за работу ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2014, 22:16 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
bazileWinnipuh, если RichTextBox не получится использовать, то может взять готовую библиотеку ( раз , два )? У них открытые исходники так что можно легко встроить их прямо в в твое приложение. проверил и второй парсер, он тоже кривой авторRTFDocument: Info Creatim=2014-03-20 09:43:35 Revtim=2014-03-20 09:43:35 Printim=2014-03-20 09:43:35 Buptim=2014-03-20 09:43:35 ColorTable(1) 0:0 0 0 FontTable(1) 0:Arial Charset:0 ----------------------- Paragraph Text:The ь, ц, з characters are displayed/saved as ?, ?, ?, "?", "?", "?" Paragraph ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2014, 12:44 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
ИзопропилWinnipuhнедоделано там для таких случаев, так же для RTL текстов и т.д. ну тогда спецификации rtf в руки и установить адекватную цену за работу там не описано то, о чем я спрашиваю. Т.е. в каких случаях игнорируется ansicpg=nnnn? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2014, 12:45 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
Winnipuh, .. все-таки я не пойму вашей задачи .. если у вас в RTF допускаются символы юникода, то что мешает вам сделать замену, напр., если ansicpg1252, то 'fc -> u0252? 'f6 -> u0246? 'e7 -> u0231? .. и тогда это и в Африке будут турецкие буквы .. Если кодовая страница будет греческая - то соответствующие коды Юникода .... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2014, 13:38 |
|
c# и RTF вопрос
|
|||
---|---|---|---|
#18+
carrotikWinnipuh, .. все-таки я не пойму вашей задачи .. если у вас в RTF допускаются символы юникода, то что мешает вам сделать замену, напр., если ansicpg1252, то 'fc -> u0252? 'f6 -> u0246? 'e7 -> u0231? .. и тогда это и в Африке будут турецкие буквы .. Если кодовая страница будет греческая - то соответствующие коды Юникода .... возможно я несколько сумбурно описал. Задача такая, чего хотелось бы: в ртф может быть практически любая кодовая страница ansicpg1251 ansicpg1252 ansicpg1254 ... но при этом всегда 'fc - это всегда должна быть турецкая буква Так делает richtext контрол от microsoft Но не так ведет себя мой код, поскольку я как описано в документации по формату ртф реагирую на кодовую страницу. Видимо в каких -то случаях не надо реагировать на нее, вот это я и пытаюсь понять. Есть такая версия Если указана некая ansicpgXXXX и указан fcharset0 и попадается такой код 'hh и если hh - это вторая часть таблицы ascii (128-255), то тогда игнорируется ansicpgXXXX и берется код из таблицы. В этом случае в примере турецкая буква - будет всегда турецкой, она в таблице. Корректно ли то, что я сформулировал выше для всех случаев? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2014, 13:54 |
|
|
start [/forum/topic.php?fid=20&msg=38589515&tid=1403122]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 162ms |
0 / 0 |