2010-10-20 2 views
1

Мне интересно, почему у нас нет строковых классов, которые представляют собой строку кластеров графена Unicode вместо кодовых точек или символов. Мне кажется, что в большинстве приложений программистам проще было бы получить доступ к компонентам графемы, если это необходимо, чем организовать их из кодовых точек, что представляется необходимым, даже если бы избежать случайного нарушения строки в «середине графемы», (по крайней мере теоретически). Внутренний класс строк может использовать кодировку с переменной длиной, такую ​​как UTF-8, UTF-16, или в этом контексте даже UTF-32 является переменной длиной; или реализовать подклассы для всех из них (и, возможно, настроить выбор во время выполнения, чтобы разные языки могли использовать их оптимальные кодировки). Но если программисты могли «видеть» графемные единицы при проверке строки, не строит ли код обработки вообще ближе к достижению корректности и без особой сложности?Строковый класс, основанный на графемах?

Ссылка:
Characters and Combining Marks
Unicode implementer's guide part 4: grapheme breaking
UnicodeString Class Reference
Enumerating a string by grapheme instead of character
Strings and character encoding in C++

+0

Потому что вы его не написали? –

+1

Интересно, будет ли это вопрос, который лучше всего будет размещен на http://programmers.stackexchange.com/ –

+1

@ Джон, нассар: Я думаю, что предложение Джона является хорошим для этого вопроса. –

ответ

0

Я не думаю, что это так, потому что графемы перерывы не единственная мера правильности. И, в зависимости от используемого языка/скрипта, существуют разные воспринимаемые пользователем символы. Если вас беспокоит режим нормализации, вы также захотите увидеть Normalizer::concatenate. Поэтому я бы рекомендовал просто работать в блоках кода большую часть времени и рассчитывать перерывы, когда это необходимо.

Смежные вопросы