hovadur писал(а):Тогда неверен c16:=utf16[j]. Ведь в utf16[j] может встретиться и четарехбайтовый символ.
О недостатках UTF-16 здесь уже было много сказано. Повторять нет смысла, кого интересует, те могут перечитать тему. Если речь идет о русскоязычных задачах, с осознанным ограничением в неиспользовании иероглифов, то в этой узкой сфере UTF-16 будет эффективен. UTF-8 эффективен только для англоязычных задач, но для таких задач будет еще более эффективным классический AnsiString. Таким образом в практических задачах UTF8String не расширяет возможности AnsiString, в виду чрезмерной медлительности. А UTF-16 (UnicodeString) - расширяют возможности AnsiString, но не являются исчерпывающим строковым типом. Строковый тип данных для UTF-32 максимально универсален, но сегодня слабо реализован на уровне строковой библиотеки.
Моя цель данной дискуссии была как раз в том, чтобы сформировать коллективное мнение, что строки UTF-32 нужны и такой тип данных нужно развивать в FPC, Lasarus. К сожалению дискуссия получилась довольно странной, как разговор на тему, кто из людей круче. Но вопрос был не о людях, а о строковых типах данных и направлении развития строковой библиотеки.