powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Unicode для кириллицы в нижнем/верхнем индексах
25 сообщений из 86, страница 3 из 4
Unicode для кириллицы в нижнем/верхнем индексах
    #40022596
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asviridenkov,

Ну и чудненько.
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40022605
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster
Что-то вы какое-то тяжелое решение рассматриваете.

HTML <sub>....</sub>, <sup>....</sup> спасут отца русской демократии. Хранить в varchar поле, показывать стандартным WebBrowser (ну или HTMLViewer`ом).

Собственно, несколькими постами выше твоего я именно это и предложил.

RTF, кстати, вовсе не бинарный формат, и EM_SETTEXTEX никто не отменял (это к вопросу о стримах и блобах)
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024426
Kos-2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Kos-2010
нашел какую-то " HTML Display Components " - посмотрим...

Там оно мёртвое. Вот оно живое: https://github.com/BerndGabriel/HtmlViewer


Воспользовался компонентом HtmlViewer .
В общем-то получилось довольно не плохо ( рис.1 ), учитывая что в базе будет хранится строка ( рис.3 ).+ввод всяких бета и, альфа и т.д.

Затея такая, чтобы пользователь видел только окна рис.1 и рис.2 (без тегов).
В окне рис.2 он редактирует запись. В окне рис.1 он ее смотрит как получилось.

А кнопки " Верх.инд. " и " Нижн.инд. " вместе с окном рис.2 фирмируют строку в окне рис.3 ( с тегами ), т.е. п нажатию кнопок вставляются теги верхнего и нжнего индекса.

Только вопрос, как легче формировать текст в окне 3?
В лоб, т.е. вводишь текст, потом нажимаешь например " верхн.инд " и открывается " <sup> ", отжимаешь кнопку и вставляется " </sup> " ну и т.д.
или есть более легкий вариант?
Я пока не рассматриваю вариант, чтоб в окне 2, были видны теги,
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024431
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kos-2010,

А не проще было взять RichEdit и не искать себе приключений?
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024474
Kos-2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Kos-2010,

А не проще было взять RichEdit и не искать себе приключений?


1. Если это касается базы данных ( FireBird 3 ), то в таком случае мне нужно хранить текст " RTF " в каком-либо другом поле. и подгружать его в RichEdit при выборе каждой строки - правильно?

2. Я вывожу данные базы в MS Word , (ну как обычно через " CreateOleObject('Word.Application'); ").
Вопрос: у меня получится в данном случае вывести данные корректно, т.е. с индексами?

P.S.
просто при использовании HtmlViewer1
Код: pascal
1.
FMain.HtmlViewer1.CopyToClipboard;


выводе в MS Word , индексы в MS Word превратились в обычные (т.е. нормального размера).
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024479
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kos-2010

1. Если это касается базы данных ( FireBird 3 ), то в таком случае мне нужно хранить текст " RTF " в каком-либо другом поле. и подгружать его в RichEdit при выборе каждой строки - правильно?

2. Я вывожу данные базы в MS Word , (ну как обычно через " CreateOleObject('Word.Application'); ").
Вопрос: у меня получится в данном случае вывести данные корректно, т.е. с индексами?

P.S.
просто при использовании HtmlViewer1
Код: pascal
1.
FMain.HtmlViewer1.CopyToClipboard;


выводе в MS Word , индексы в MS Word превратились в обычные (т.е. нормального размера).


1. Хранение RTF ничем не отличается от хранения HTML. Внезапно, это тоже текстовый формат.
2. С richedit как раз не должно быть проблем
3. Значит, HtmlViewer копирует только текст либо не доработан. Но это поправимо, проект более-менее живой, можно попросить добавить фичу или попробовать самому исправить
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024485
Kos-2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal

...
3. Значит, HtmlViewer копирует только текст либо не доработан. Но это поправимо, проект более-менее живой, можно попросить добавить фичу или попробовать самому исправить

скорее всего что-то у меня не правильно работает. (несколько лет пользовался одним и тем же кодом, проблем не было. кстатити с unicode верхних и нижних индексов тоже проблем нет).
при обычном копировании " CTRL-C " " CTRL-V " из HtmlViewer (в запущенной программе) в MS Word - все замечательно переносится (я имею в виду размер индексов)
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024520
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey,

Всё бы ничего, но дельфовый RichEdit уже научился в \urtf или до сих пор каждую не ASCII букву кодирует как #XXXX; ?
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024548
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,

А не всё ли равно?
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024579
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kos-2010
скорее всего что-то у меня не правильно работает. (несколько лет пользовался одним и тем же кодом, проблем не было. кстатити с unicode верхних и нижних индексов тоже проблем нет).
при обычном копировании " CTRL-C " " CTRL-V " из HtmlViewer (в запущенной программе) в MS Word - все замечательно переносится (я имею в виду размер индексов)

Там всего две процедуры - CopyToClipboardAsText и CopyToClipboardAsHtml. И они просто загоняют текстовое представление с соответствующим типом данных в буфере обмена. Возможно, в твоем случае почему-то вызвался CopyToClipboardAsText
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024634
Kos-2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal

Там всего две процедуры - CopyToClipboardAsText и CopyToClipboardAsHtml. И они просто загоняют текстовое представление с соответствующим типом данных в буфере обмена. Возможно, в твоем случае почему-то вызвался CopyToClipboardAsText


Я имел в виду компонент HtmlViewer , там всего одна CopyToClipboard
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024639
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kos-2010
там всего одна CopyToClipboard

Этот метод копирует в буфер сразу в двух форматах: в plaintext и html.
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024643
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024660
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
alekcvp,
А не всё ли равно?

Зависит от.
Представь что у тебя в базе Firebird поле Varchar UTF8, а ты туда хочешь RTF загнать. У тебя в базе на 1 символ 4 байта уходит, ещё в RTF 5 - итого 20 байт на один символ, не дохрена ли?..
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024666
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp
У тебя в базе на 1 символ 4 байта уходит,

С чего 4, если там UTF-8? Один байт на ascii символ там будет.
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024667
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
04.12.2020 15:16, alekcvp пишет:
> У тебя в базе на 1 символ 4 байта уходит

в общем случае это не так.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024764
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpУ тебя в базе на 1 символ 4 байта уходит, ещё в RTF 5 - итого 20 байт на один символ
utf8 по факту не 4 а 3 байта, причем не 3, а "от одного до трех", т.к. формат плавающий.
И, в rtf не может быть 5 байт на символ. По крайней мере я в это не верю.
с rtf другая проблема - там много лишней фигни, и слово "абракадабра" сохраненное в rtf дает файл размером 31 килобайт, с перечислением всяких шрифтов и прочей мутотой.
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024766
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
с rtf другая проблема - там много лишней фигни, и слово "абракадабра" сохраненное в rtf дает файл размером 31 килобайт, с перечислением всяких шрифтов и прочей мутотой.


Код: plaintext
1.
2.
{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset204 Tahoma;}{\f1\fnil\fcharset0 Tahoma;}}
\viewkind4\uc1\pard\lang1049\f0\fs28\'e0\'e1\'f0\'e0\'ea\'e0\'e4\'e0\'e1\'f0\'e0\lang1033\f1\par
}

210 байт.
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024767
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey'e0\'e1\
в этом смысле - да, был неправ, согласен, это не бинарный формат.
С другой стороны, нифига же не "5 байт на символ".
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024770
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
С другой стороны, нифига же не "5 байт на символ".

Всё за пределами ASCII ескейпится. Там может быть и больше 5 байтов на символ. Латиница по одному байту.
Текст>>ASCII<<
>>中文<<
>>абракадабра<<

RTF:
Код: plaintext
1.
2.
3.
4.
{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Tahoma;}{\f1\fmodern\fprq6\fcharset134 SimSun;}{\f2\fnil\fcharset204 Tahoma;}}
\viewkind4\uc1\pard\f0\fs28 >>ASCII<<\par
>>\f1\'d6\'d0\'ce\'c4\f0 <<\par
>>\lang1049\f2\'e0\'e1\'f0\'e0\'ea\'e0\'e4\'e0\'e1\'f0\'e0\lang1033\f0 <<\par
}

306 байт.
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024771
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
С другой стороны, нифига же не "5 байт на символ".

Да, ошибся, 4.
kdvutf8 по факту не 4 а 3 байта, причем не 3, а "от одного до трех", т.к. формат плавающий.
Какая в таблице Firebird максимальная длина поля VARCHAR UTF8? Без блоб.
В байтах и в символах.
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024776
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpКакая в таблице Firebird максимальная длина поля VARCHAR UTF8? Без блоб.
В байтах и в символах.
да что ж такое... Да, у utf8 максимально 4 байта на символ, и это записано в системных таблицах Firebird.
И макс длина строки 32к, следовательно, 32/4 = 8к символов. Но это по максимуму, теоретическому.
Ограничение, специально чтобы "на всякий случай" ничего не вылезло.
Но utf8 на символ хранит ПЕРЕМЕННОЕ КОЛИЧЕСТВО БАЙТ.
Например, все русские буквы хранятся по 2 байта на символ. Не по 4, и не по 3, а по 2 байта.
А латинские - вообще одним байтом.

UTF-8, по сравнению с UTF-16, наибольший выигрыш в компактности даёт для текстов на латинице, поскольку латинские буквы без диакритических знаков, цифры и наиболее распространённые знаки препинания кодируются в UTF-8 лишь одним байтом, и коды этих символов соответствуют их кодам в ASCII.[4][5]
https://ru.wikipedia.org/wiki/UTF-8


alekcvpДа, ошибся, 4.
вы что считаете-то. текстовое представление кодов символов? Вам ведь уже показали, что
абракадабра это \'e0\'e1\'f0\'e0\'ea\'e0\'e4\'e0\'e1\'f0\'e0\
И тут даже не utf8, а однобайтовое кодирование.

Впрочем, пофиг. Вся эта rtf-шлабуда будет сохранена в utf8 как 1 байт на символ (см. выше). Так что сильно беспокоиться не о чем.
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024784
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
И макс длина строки 32к, следовательно, 32/4 = 8к символов. Но это по максимуму, теоретическому.
Ограничение, специально чтобы "на всякий случай" ничего не вылезло.
Но utf8 на символ хранит ПЕРЕМЕННОЕ КОЛИЧЕСТВО БАЙТ.
Например, все русские буквы хранятся по 2 байта на символ. Не по 4, и не по 3, а по 2 байта.
А латинские - вообще одним байтом.

Да какая разница как оно там внутре хранится, если в базу влезает только из расчёта 4 байта на символ?
То что оно переменной длины - хорошо для каналов передачи данных, а на хранение, в случае БД, не влияет никак.
kdv
абракадабра это \'e0\'e1\'f0\'e0\'ea\'e0\'e4\'e0\'e1\'f0\'e0\
И тут даже не utf8, а однобайтовое кодирование.

Ок, в "абракадабр" 10 символов. Сколько таких абракадабр можно сохранить максимально в одном поле VARCHAR с кодировкой UTF8 в формате RTF?
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024786
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
kdv,

а если в BLOB хранить, то вообще пофигу, сколько там чего на символ
...
Рейтинг: 0 / 0
Unicode для кириллицы в нижнем/верхнем индексах
    #40024787
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyВсё за пределами ASCII ескейпится.

Может, но не обязано. "Голые" байты распознаются в соответствии с указанными в заголовке
атрибутами "\ansi\ansicpg1252".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 86, страница 3 из 4
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Unicode для кириллицы в нижнем/верхнем индексах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]