7

我对 UTF8 有基本的了解:代码点具有可变长度,因此“字符”可以是 8 位、16 位甚至更长。

我想知道的是,是否有一些 C 语言中的示例代码、库等与 UTF8 字符串类似,例如 CEg 中的标准库,告诉字符串的长度等。

谢谢,

4

3 回答 3

4

GNU 确实有一个 Unicode 字符串库,称为libunistring,但它处理任何事情的能力几乎不如ICU的。

例如,GNU 库甚至不让您访问排序规则,这是所有字符串比较的基础。相比之下,ICU确实如此。ICU 没有出现 GNU 的另一件事是 Unicode 正则表达式。为此,您可能想使用Phil Hazel 的优秀 PCRE 库 C,可以使用 UTF-8 支持进行编译。

但是,GNU 库可能足以满足您的需要。我不太喜欢它的 API。很乱。如果你喜欢 C 编程,你可以试试Go 编程语言,它具有出色的 Unicode 支持。它是一种新语言,但小巧、干净且使用起来很有趣。

另一方面,主要的解释语言——Perl、Python 和 Ruby——都对 Unicode 提供了不同的支持,这比 C 语言中的更好。其中,Perl 的 Unicode 支持是最发达和最强大的。

请记住:支持更多字符是不够的。没有它们的规则,你就没有 Unicode。最多,您可能拥有 ISO 10646:一个大型字符库,但没有规则。我的口头禅是“Unicode 不仅仅是更多的字符;它是更多的字符加上一大堆处理它们的规则。”</p>

于 2012-06-10T02:06:27.757 回答
1

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

但是,如果您需要做的只是确定 UTF-8 编码字符串中的代码点数,请计算值介于\x01and\x7F或介于\xC2and之间的字符数\xFF

于 2012-06-08T11:58:27.303 回答
1

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

于 2018-04-28T23:31:24.373 回答