2008-11-24 19 views
46

Estoy buscando una pequeña biblioteca C para manejar cadenas utf8.Light C Biblioteca Unicode

Específicamente, división basada en delimitadores Unicode para usar con algoritmos de derivación.

mensajes relacionados han sugerido:

UCI http://www.icu-project.org/ (me pareció demasiado voluminoso para mis propósitos en dispositivos embebidos)

UTF8-CPP: http://utfcpp.sourceforge.net/ (Excelente, pero C++ no C)

Ha cualquiera ha encontrado bibliotecas de bases de código pequeñas, independientes de la plataforma, para manejar cadenas de caracteres unicode (no necesita naturalización).

+1

utf8-cpp is great! portado sin problemas a ios/android. encabezado solamente libarary – barney

Respuesta

31

Una biblioteca agradable, liviana, que uso con éxito es utf8proc.

7

UTF-8 está especialmente diseñado para que muchas funciones de cadenas orientadas a bytes continúen funcionando o solo necesiten modificaciones menores.

C strstr función, por ejemplo, funcionará perfectamente siempre que sus dos entradas sean cadenas UTF-8 válidas, terminadas en nulo. strcpy funciona bien siempre que su cadena de entrada comience en un límite de caracteres (por ejemplo, el valor de retorno de strstr).

¡Es posible que ni siquiera necesite una biblioteca separada!

+3

Muy cierto, hasta ahora solo había necesitado almacenar/copiar cadenas y estaba haciendo exactamente eso. Pero luego comencé a necesitar dividir/contener palabras para indexar, así que quería asegurarme de que estaba tratando con ellas adecuadamente. – Akusete

+1

Mientras trabajan, las funciones de búsqueda probablemente no funcionarán tan bien frente a los caracteres UTF-8. Por ejemplo, si se puede determinar que un carácter UTF-8 no coincide inmediatamente (a menudo es posible si se lo compara con un carácter ASCII), se puede omitir toda la codificación de caracteres UTF-8, que puede ser de varios bytes. Pero tiene razón en que algunas de las funciones de C funcionarán bien con las cadenas UTF-8, que es una de las razones por las que UTF-8 es popular. – Ethan

+0

No fallar no es lo mismo que trabajar: algo tan simple como el tamaño de cadena no funciona para UTF-8. UTF-8 NO está diseñado especialmente para la compatibilidad de la biblioteca. –