Как я могу получить/установить RTF-контент TTNTRichEdit в формате unicode (utf8/utf16)? Я использую методы TRichEdit.loadFromStream/saveToStream для TStringStreams для получения содержимого RTF. Но он использует только ANSI-коды, зависящие от локали, для нестандартных символов ASCII. (4x: \`f5
) Но у меня будут проблемы, если пользователь перенесет его/ее проект на другой компьютер с другим языком. Национальные персонажи будут потеряны. Сообщения EM_STREAMIN/EM_SREAMOUT Флаг SF_UNICODE может сочетаться с SF_TEXT не с помощью SF_RTF.Как я могу получить содержимое unicode TTNTRichEdit в Delphi 7?
ответ
У вас нет проблем. Вы используете компонент, совместимый с Unicode. Вы не потерпите потери данных. Из Wikipedia article on RTF:
Стандартный файл в формате RTF может состоять только из 7-битовых символов ASCII, но может кодировать символы за пределами ASCII экранирующей последовательности. Символьные escape-файлы имеют два типа: экранирование кодовых страниц и, начиная с RTF 1.5, Unicode escapes. В escape-последовательности кода две шестнадцатеричные цифры после обратного слэша и апострофа пишущей машинки используются для обозначения символа, взятого с кодовой страницы Windows. Например, если кодовая страница установлена в Windows-1256, последовательность
\'c8
будет кодировать арабскую букву bā' (ب).Для запуска Unicode используется управляющее слово \ u, за которым следует 16-разрядное знаковое десятичное целое число, указывающее номер кода юникода UTF-16. Для программ без поддержки Unicode это должно сопровождаться ближайшим представлением этого символа на указанной кодовой странице. Например, \ u1576? даст арабское письмо bā' ب, указав, что более старые программы, не поддерживающие Unicode, должны сделать это как знак вопроса.
Вы наблюдаете за удалением кодовой страницы. Но все в порядке. Вот что такое \`f5
. Символ находится на кодовой странице документа, и, следовательно, можно использовать escape-код. Если вы включаете символы вне кодовой страницы документа, тогда элемент управления будет использовать escape-код Unicode.
Спасибо, Дэвид! Это прекрасное исследование и новая информация для меня. Но есть некоторые неопределенные вещи. Вот один экспорт RTF компонента : '{\ rtf1 \ ansi \ ansicpg1252 \ deff0 {\ fonttbl {\ f0 \ fnil \ fcharset238 BatangChe;} {\ f1 \ fnil Arial;}} {\ colortbl; \ red255 \ green0 \ blue0;} \ viewkind4 \ uc1 \ pard \ cf1 \ lang1038 \ f0 \ fs44 \ 'f5 \' fa \ 'fb \ cf0 \ f1 \ fs40 \ par}' Содержит кодовую страницу 1252, но моя Win использует 1250. И она содержит код ANSI char \ 'f5 с кодовой страницей 1252. Это странно для меня. Нет, я вижу. Это версия 1! –
Это не совместимо с UC. –
- 1. Как я могу получить символ строки в delphi 7?
- 2. CHR эквивалент Unicode в Delphi 7
- 3. Работа с строками Unicode в Delphi 7
- 4. Как получить японские символы в Delphi 7
- 5. Вызов GetStringTypeW из не-unicode Delphi (7)
- 6. Delphi 7, обработка XML с поддержкой Unicode
- 7. Как преобразовать символы Unicode в коды ascii в delphi 7?
- 8. delphi 7: Как я могу найти элемент коллекции объектов?
- 9. Несоответствие строки Unicode Delphi
- 10. Unicode в Delphi 4
- 11. Как получить GIT в Delphi 7?
- 12. Как получить http-запрос в Delphi 7?
- 13. Как я могу получить содержимое моей JTextPane?
- 14. Могу ли я удалить лишние строковые вызовы Unicode (Delphi)
- 15. Как я могу получить содержимое веб-страницы
- 16. Как я могу получить содержимое html.Node
- 17. Delphi indy получить содержимое страницы
- 18. Как я могу получить содержимое файла назад
- 19. Как я могу получить содержимое из UIWebView?
- 20. Как конвертировать TStringGrid из Delphi 7 в Delphi XE
- 21. В Delphi 7, почему я могу присвоить значение const?
- 22. GetStackTrace в Delphi 7?
- 23. Delphi 7, как скопировать содержимое Paintbox на Tbitmap?
- 24. Как я могу получить этот файл Написание кода для работы с Unicode (Delphi)
- 25. Как я могу получить символ бесконечности Unicode, преобразованный в String
- 26. Как я могу получить символы Unicode из IMAP в PHP?
- 27. Как я могу получить значение Unicode символа в go?
- 28. Как я могу получить значения Unicode в полевых документах
- 29. Исключение EFilererror в Delphi 7
- 30. Как я могу отобразить unicode в QGraphicsTextItem?
Это моя проблема, дорогой Дэвид! Как я могу получить содержимое Unicode. Я желаю использовать unicode. Но TRichEdit не возвращает его мне (как я знаю). –
Нет, я имею в виду прекратить использование элемента управления ANSI. Используйте Unicode Delphi или используйте элементы управления Unicode в своем не-Unicode Delphi. Исправьте проблему у источника. Прекратите использование ANSI 'TRichEdit'. –
Я использую TTNTRichEdit, совместимый с unicode в priciple. Но в его установленной документации ничего не говорится о том, как я могу получить/установить свой контент rtf в unicode. Изменить компилятор теперь не вариант. Могли бы вы помянуть еще один компонент? –