轻量级的C语言Unicode库

55

我正在寻找一个小型的C库来处理utf8字符串。

具体来说,根据unicode分隔符进行拆分,以便与词干算法一起使用。

相关帖子建议:

ICU http://www.icu-project.org/(我发现对于嵌入式设备,它太笨重了)

UTF8-CPP:http://utfcpp.sourceforge.net/(非常好,但是是C++而不是C)

有没有人找到过处理unicode字符串的平台无关、小型代码库(不需要自然化)。


2
utf8-cpp非常棒!在iOS/Android上移植顺利。这是一个仅包含头文件的库。 - barney
3个回答

39

我成功使用的一个轻量级库是utf8proc


15

此外还有MicroUTF-8,但可能需要登录凭据才能查看或下载源代码。


13

UTF-8是专门设计的,以便许多面向字节的字符串函数可以继续工作或仅需要进行较小的修改。

例如, C 的strstr 函数只要其输入都是有效的、以 null 结尾的 UTF-8 字符串,就能够完美地运行。 另外,strcpy 函数只要其输入字符串从字符边界开始(例如 strstr 的返回值),就能够正常工作。

因此,您甚至可能不需要一个单独的库!


4
非常正确,直到现在我只需要存储/复制字符串并一直这样做。但是随后我开始需要将单词拆分/词干提取以进行索引,因此我希望确保我正确地处理它们。 - Akusete
1
虽然它们可以工作,但在面对UTF-8字符时,搜索函数可能表现不佳。例如,如果可以确定UTF-8字符与ASCII字符不匹配(通常是可能的),则可以跳过整个UTF-8字符编码(可能包含多个字节)。但你说得对,C语言的一些函数可以很好地处理UTF-8字符串,这也是UTF-8流行的原因之一。 - Ethan
1
不崩溃并不意味着正常工作:像字符串大小这样简单的事情在UTF-8中并不适用。UTF-8并非专门为库兼容性而设计。 - Adrian Maire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接