首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C语言中的UTF8处理

C语言中的UTF8处理
EN

Stack Overflow用户
提问于 2012-06-08 19:46:25
回答 3查看 7.5K关注 0票数 7

我对UTF8有基本的理解:代码点的长度是可变的,所以一个“字符”可以是8位、16位,甚至更长。

我想知道的是,在C语言中是否有一些示例代码、库等可以做类似于UTF8字符串的事情,例如,告诉字符串的长度等。

谢谢,

EN

回答 3

Stack Overflow用户

发布于 2012-06-10 10:06:28

GNU确实有一个名为的Unicode字符串库,但它处理任何东西都不如ICU的好。

例如,GNU库甚至不允许您访问排序规则,而排序规则是所有字符串比较的基础。相比之下,ICU有。ICU还有一个GNU没有的特性,那就是Unicode正则表达式。为此,您可能希望使用Phil Hazel’s excellent PCRE library for C,它可以使用UTF8支持进行编译。

但是,GNU库可能足以满足您的需求。我不太喜欢它的API。非常凌乱。如果你喜欢C编程,你可以试试Go programming language,它有很好的Unicode支持。这是一门新的语言,但它很小,很干净,而且使用起来很有趣。

另一方面,主要的解释语言- Perl、Python和Ruby -都对Unicode提供了不同程度的支持,这比您在C中得到的支持要好得多。

记住:仅仅支持更多的字符是不够的。如果没有相应的规则,就没有Unicode。至多,您可能有ISO 10646:一个很大的字符集,但没有规则。我的信条是“Unicode不仅仅是更多的字符;它是更多的字符加上一大堆处理这些字符的规则。”

票数 4
EN

Stack Overflow用户

发布于 2012-06-08 19:58:27

处理Unicode的最重要的库是IBM's ICU

但是,如果您所需要做的就是确定UTF8编码字符串中的代码点的数量,那么可以使用介于\x01\x7F之间或\xC2\xFF之间的值来计算字符的数量。

票数 1
EN

Stack Overflow用户

发布于 2018-04-29 07:31:24

如果您对不分配内存并使用堆栈的库感兴趣,可以尝试使用utf8rewind

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10948234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档