用C UTF8处理(UTF8 processing in C)

2019-07-29 18:50发布

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

如果有,做类似的事情,以一个UTF8字符串像CEG标准库的示例代码,图书馆等C语言告诉字符串的长度等什么我不知道是

谢谢,

Answer 1:

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

例如,GNU图书馆甚至不给你整理的访问,这是所有字符串比较的基础。 相比之下,ICU做。 这ICU有GNU不会出现另一件事是Unicode正则表达式。 对于这一点,你可能会想用菲尔榛优秀PCRE库对于C ,可以用UTF-8支持进行编译。

但是,它可能是在GNU库是够你所需要的。 我不喜欢它的API了。 很乱。 如果你喜欢C编程,你可以尝试去编程语言 ,它具有优异的Unicode支持。 这是一种新的语言,但小而干净和使用乐趣。

在另一方面,主要的解释语言 - 的Perl,Python和Ruby - 一切都改变了对Unicode的支持是更好比你永远不会得到C.其中,Perl的Unicode的支持是最发达和强大。

请记住:这是不够的,支持更多的字符。 如果没有跟他们走的规则,你没有Unicode的。 至多,你可能有ISO 10646:一个大的字符集,但没有规则。 我的口头禅是“Unicode的不只是更多的字符; 它更多的字符加上一大堆的处理它们的规则。”



Answer 2:

处理Unicode的最重要的库是IBM的重症监护病房 。

但是,如果你需要做的是确定的代码点在UTF-8编码的字符串数,数字符与之间的值数\x01\x7F之间或\xC2\xFF



Answer 3:

如果你有兴趣在不分配内存,并使用堆栈,你可以尝试库utf8rewind 。



文章来源: UTF8 processing in C
标签: c unicode utf-8