budden писал(а):
Дальше вопрос к Вам, kemet, как к одному из представителей сообщества A2 - что Вы думаете на тему замены utf8 внутри везде на UCS4 (или 16-разрядную, если китайцев побоку) кодировку, допиливания типа CHAR32 или CHAR16? И что на эту тему думает сообщество? Всё же Texts.Char32 - это не более, чем псевдоним для LONGINT. Такой уровень сервиса со стороны компилятора явно недостаточен.
UTF8, на мой взгляд, хорошая транспортная кодировка. Для чтения и записи достаточно байтового потока. Данные могут храниться в обычных однобайтовых строках и это хорошо, так как переделки заключаются в увеличении длины строки и использованиb процедур из USF8Strings вместо Strings, а это делается простой заменой в импорте Strings := UTF8Strings. Остальное правится быстро по мере надобности. Дело в том, что есть коммерческий софт, основанный на А2. И нужны минимальные телодвижения, чтобы оно продолжало работать. Вспоминается эпичный период, когда в Дельфи таки решили перейти на юникод, поломав многое из того, что работало.
В чем-то UTF8 не оптимальна, но глобальное использование UTF32 это вообще маразм - чудовищный оверхед и это, в общем-то мало чего решает, так как и в UTF32 нельзя просто адресоваться по индексу, необходимо сканировать строку. Да, в гораздо меньших объемах чем UTF8 или UTF16, но всё же. Единственный плюс - более-менее прямое использование таблиц преобразования.
С UTF16 другая проблема - суррогаты, хотя он более оптимальный по хранению, но и технокалия больше. Но всё-же UTF16 хороший выбор для подсистемы Text, в которой сейчас UCS4.
Я думаю, что нельзя оставить один тип. Мне в микроконтроллерах более чем достаточно однобайтового CHAR а если не достаточно - UTF8 спасает отцов русской демократии.
В общем - исходники должны храниться в UTF8, никаких экзотических кодировок в системе быть не должно и не должно быть предположений об их существовании = где нужно принимаем/передаем UTF8.