Я рассматриваю возможность использования ICU для обработки строк Unicode в собственном модуле Node.js, потому что мне кажется, что v8::String
(согласно эти документы) не имеет C++ API для этой цели.
Насколько мне известно, V8 ожидает UTF-16 в ExternalStringResource
и других API, поэтому я хотел бы использовать ICU для обработки UTF-16.
Мне особенно нужно:
- Перебирать символы (а не только 16-битные единицы кода) строки UTF-16.
- Сообщите количество символов (не только 16-битных кодовых единиц), которые содержит строка UTF-16.
Поэтому я просмотрел документацию ICU и нашел UnicodeString
и CharacterIterator
. Однако у UnicodeString
нет метода fromUTF16
, только fromUTF8
и fromUTF32
.
Еще одна вещь, в которой я не уверен, копирует ли конструктор UnicodeString
данные, которые я ему даю, или нет? Я бы очень предпочел использовать подход с нулевым копированием, когда я просто работал бы с неизменяемым объектом, поэтому он не должен выполнять никаких операций копирования, а просто использовать буфер, на который я указываю.
Я также не уверен, могу ли я просто использовать UCharIterator
(при условии, что я могу каким-то образом преобразовать UChar*
из моих строк UTF-16).
Итак, мой вопрос: Как мне использовать ICU для вышеуказанных целей?
Заранее спасибо за ваши ответы!