Здравствуйте, rudzuk, Вы писали:
R>1. Итерация символов требует несколько проверок последовательностей (4), вместо единственной в UTF-16;
О каких проверках речь? На практике в 90% случаем обработка UTF-8 строк почти не отличается от таковой же в ASCII. Если мы итерируемся именно по символам, то символы в Юникоде в общем виде могут занимать несколько кодпоинтов, идти справа на лево, даже в UTF-32, так что не надо упрощать.
R>2. Все что за пределами ascii кодируется, либо тем же количеством байт, что и в UTF-16, либо большим.
Зависит от данных и статистики. На практике, многие многих форматы (Code, JSON, XML и т.д.) и наиболее распространенные языки будут занимать меньше.
R>3. В UTF-16 почти все что нужно лежит в пределах BMP (т.е. суррогатная пара не требуется), а значит такие строки могут иметь индексный доступ.
Что нужно ?! В Юникоде куча символов может состоять из нескольких кодпоинтов, независимо от суррогатных пар, и это в любой кодировке: UTF-8/16/32.