Можно ли заставить RTF писать в UTF-8 ?
Записи в формате RTF создаются на сишарпе RichTextBox компонентом. Далее вместе с другими данными (включая бинарные) пишутся на диск.
Дело в том что русские буквы RTF кодирует как байты (т.е. по две 16ричные цифры). Английские же - не кодирует.
Поэтому если открыть такой файл какой либо сторонней программой (напр. Beyond Compare), которая показывает содержимое, пытаясь подобрать кодировку, то английский текст читается без проблем, а русский - нет.
Нельзя ли RichTextBox заставить сохранять русские символы в напр. UTF-8 кодировке?
уточню.
Вот такой текст
"свернуть развернуть блок
ctrl+M+L"
внутри RTF будет таким
"\u1089?\u1074?\u1077?\u1088?\u1085?\u1091?\u1090?\u1100? \u1088?\u1072?\u1079?\u1074?\u1077?\u1088?\u1085?\u1091?\u1090?\u1100? \u1073?\u1083?\u1086?\u1082?\par
ctrl+M+L"
Именно эту белиберду (видимо цифры символа в Юникодовской кодировке) я вижу если смотрю в Beyond Compare, чтоб версии сравнить.
А я там хочу видеть нормальный русский текст. И это задача.
.........
Файл это не RTF документ (который Beyond Compare может нормально показать), а смесь чего угодно (включая бинарные данные) вместе с RTF (поэтому Beyond Compare не может преобразовать эти \uXXXX в русский символ).
.......
вначале RTF текста стоит
"{\rtf1\ansi\ansicpg1252\deff0\deflang1031"
возможно это и решает что английские буквы - буквами остаются, а русские кикиморой кодируются.
Но можно ли этим управлять? (речь идет о RichTextBox)
возможно это и решает что английские буквы - буквами остаются, а русские кикиморой кодируются.
Английские буквы выводятся в RFT как есть, потому что они находятся в ASCII. Все остальные символы (не ASCII) кодируются в соответствии с форматом.
Но можно ли этим управлять? (речь идет о RichTextBox)
Так что нет.
Нельзя ли RichTextBox заставить сохранять русские символы в напр. UTF-8 кодировке?
-----
Не пробовал, но...
Там есть два режима - техт и хтмл.
Перевести контрол во второй и попробовать.
Второй вариант - писать самому, т.е. без контрола, нужный РТФ.
Увы, у меня времени по-экспериментировать нет...
Там есть два режима - техт и хтмл.как минимум в ВиндовсФормс нету режима хмл.
Второй вариант - писать самому, т.е. без контрола, нужный РТФ.некоторый вариант я уже сделал. Правда это всего лишь конвентор в свой формат, который с русскими буквами, и обратно в РТФ. Конечно какие либо особые нюансы форматирования РТФ могут потеряться, но это не важно. Важно только текст, шрифт, цвет.
Нет, это невозможно сделать, поскольку по спецификации можно использовать только то, что влазит в 7 бит
Не совсем верно. Это что касается Basic entities. Внутри может быть задан Character set в одной из кодировок или unicode.
Русская вики об этом тоже говорит.
Внутри может быть задан Character set в одной из кодировок или unicode. Русская вики об этом тоже говорит.
И она же говорит, как кодируются эти символы. Читай дальше про escape-последовательности.