[oodisc] OO-2.0.2, FreeBSD 6.1-RC: сохранение нового файла в RTF с неверной кодировкой

Alexej Kryukov anagnost на yandex.ru
Ср Апр 19 19:22:10 MSD 2006


On Wednesday 19 April 2006 15:46, Dmitry Agafonov wrote:
>
> ВЫВОД:
> Сломано сохранение при локали koi8-r.
> Пишите жалобу.

Вывод, на самом деле, неправильный, в чем можно убедиться, посмотрев
созданные RTF в текстовом редакторе. Проблема вовсе не только с
KOI8, а с концепцией поддержки различных кодировок в RTF в целом.

Логика поведения RTF-фильтра (ранее специфичного для BSD, а теперь
обнаруженного и на Линуксе) состоит в следующем: нелатинские символы
всегда записываются в локальной кодировке. Этим лечится застарелая
болезнь того же фильтра, который в непропатченном виде генерировал 
чисто юникодовые RTF, открывавшиеся потом в виде вопросиков
в таких приложениях, как PageMaker или Word 95. Но очевидно, что
лекарство хуже самой болезни, т. к. в RTF может использоваться вовсе не
любая кодировка, а только кодировки от MS, так что для кирилллицы
единственно допустимым вариантом была бы cp1251. Неудивительно, что
потом файлы, созданные в локали koi8 (а также iso8859-5) некорректно
открываются самим же OOo: входной-то фильтр не пропатчен, и ведет
себя, независимо от текущей локали, совершенно правильно.

Ну а при локали UTF-8 генерируется юникодовый RTF (почти такой же,
какой был бы и без патча), который сам по себе тоже был бы относительно
корректным, если бы не то обстоятельство, что для 8-битных приложений
туда вместо корректных ANSI-эквивалентов (или хотя бы знаков вопроса)
записываются пары-тройки-четверки символов: коды UTF-8, воспринятой
как cp1251. Так что сам OOo такой файл читает, а вот если открыть его
в том же Word 95, то можно сильно удивиться.

Разумеется, здесь возникает вопрос, зачем было включать в линуксовую
сборку патч, некорректность которого уже была обсуждена применительно 
к BSD.

-- 
Regards,
Alexey Kryukov <anagnost {at} yandex {dot} ru>

Moscow State University
Historical Faculty


Подробная информация о списке рассылки Oo-discuss