Light C Unicode库[关闭]

Posted

技术标签:

【中文标题】Light C Unicode库[关闭]【英文标题】:Light C Unicode Library [closed] 【发布时间】:2010-09-23 17:38:58 【问题描述】:

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

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

相关帖子有建议:

ICU http://www.icu-project.org/(我发现它对于我在嵌入式设备上的用途来说太笨重了)

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

有没有人找到任何独立于平台的小型代码库来处理 unicode 字符串(不需要进行归化)。

【问题讨论】:

utf8-cpp 很棒!顺利移植到ios/android。仅标头库 【参考方案1】:

我成功使用的一个漂亮、轻便的库是utf8proc。

【讨论】:

【参考方案2】:

UTF-8 是专门设计的,因此许多面向字节的字符串函数可以继续工作或只需要稍作修改。

例如,

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

所以您甚至可能不需要单独的库!

【讨论】:

非常正确,直到现在我只需要存储/复制字符串并且正在这样做。但后来我开始需要拆分/词干索引以确保我正确处理它们。 当它们工作时,搜索功能在面对 UTF-8 字符时可能表现不佳。例如,如果可以确定 UTF-8 字符不立即匹配(如果与 ASCII 字符比较,通常可能),则可以跳过可以是多个字节的整个 UTF-8 字符编码。但是你说得对,C 的一些函数可以很好地处理 UTF-8 字符串,这也是 UTF-8 流行的原因之一。 不崩溃与工作不一样:像字符串大小这样简单的东西不适用于 UTF-8。 UTF-8 并不是专门为库兼容性而设计的。【参考方案3】:

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

【讨论】:

以上是关于Light C Unicode库[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

哪些开源 C 或 C++ 库可以将任意 UTF-32 转换为 NFC? [关闭]

Light libraries是一组通用的C基础库,目标是为减少重复造轮子而写(全部用POSIX C实现)

unicode编码详解,一看就懂

Unicode(统一码万国码单一码)

Cordova套接字发送Unicode

了解bytesstr与unicode的区别