Я ищу небольшую библиотеку C для обработки строк utf8.
В частности, разделение на основе разделителей Unicode для использования с алгоритмами выделения корней.
Связанные сообщения предлагали:
ICU http://www.icu-project.org/ (мне он показался слишком громоздким для моих целей на встроенных устройствах)
UTF8-CPP: http://utfcpp.sourceforge.net/ (Отлично, но C++ не C)
Кто-нибудь нашел какие-либо независимые от платформы небольшие библиотеки кодовой базы для обработки строк Unicode (не требуется натурализация).





Хорошая, легкая библиотека, которую я успешно использую, - utf8proc.
UTF-8 специально разработан таким образом, чтобы многие строковые функции, ориентированные на байты, продолжали работать или нуждались только в незначительных изменениях.
Например, функция C strstr будет отлично работать, пока оба ее входа являются действительными строками UTF-8 с завершающим нулем. strcpy работает нормально, пока его входная строка начинается с границы символа (например, возвращаемое значение strstr).
Так что вам может даже не понадобиться отдельная библиотека!
Совершенно верно, до сих пор мне нужно было только хранить / копировать строки, и я делал именно это. Но затем мне стало нужно разделять слова для индексации, поэтому я хотел убедиться, что правильно с ними обращаюсь.
Пока они работают, функции поиска, вероятно, не будут работать так же хорошо с символами UTF-8. Например, если можно определить, что символ UTF-8 не соответствует сразу (часто это возможно, если сравнивать его с символом ASCII), можно пропустить всю кодировку символов UTF-8, которая может состоять из нескольких байтов. Но вы правы в том, что некоторые функции C будут нормально работать со строками UTF-8, что является одной из причин популярности UTF-8.
Отсутствие сбоев - это не то же самое, что работа: такая простая вещь, как размер строки, не работает для UTF-8. UTF-8 НЕ разработан специально для совместимости с библиотеками.
Также есть MicroUTF-8, но для просмотра или загрузки источника могут потребоваться учетные данные.
utf8-cpp великолепен! плавно портировал на ios / android. только заголовок библиотеки