C: Самый эффективный способ определить, сколько байтов потребуется для строки UTF-16 из строки UTF-8

Я видел очень умный код для преобразования между кодовыми точками Unicode и UTF-8, поэтому мне было интересно, есть ли у кого-нибудь (или было бы интересно разработать) это.

  • Учитывая строку UTF-8, сколько байтов необходимо для кодировки той же строки UTF-16.
  • Предположим, что строка UTF-8 уже была проверена. У него нет спецификации, нет длинных последовательностей, нет недопустимых последовательностей, он заканчивается нулем. Это не CESU-8 .
  • Должен поддерживаться полный UTF-16 с суррогатами.

В частности, мне интересно, есть ли ярлыки, позволяющие узнать, когда потребуется суррогатная пара, без полного преобразования UTF -8 в кодовую точку.

Лучший код UTF-8 для кодовых точек, который я видел, использует методы векторизации, поэтому мне интересно, возможно ли это и здесь.

6
задан hippietrail 20 April 2011 в 09:29
поделиться