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? [关闭]