C中的(某些)UTF8字符串函数是什么

时间:2012-01-07 10:05:46

标签: c linux gcc unicode

对于处理ASCII我们有strlen,strcat等。 对于UTF16(即UCS2),我们有wcscatwcslen个函数。

对于处理UTF8和UCS4,C中可用的功能有哪些? 假设Linux / gcc

2 个答案:

答案 0 :(得分:3)

我不认为标准C库具有UTF-8功能。肯定有图书馆。

但是,在许多情况下,普通的str函数可以与UTF-8一起使用 strlen运行良好,返回字节数(不是字符)。 strcat有效(它也很容易超出你的缓冲区,但对于strcat来说这是正常的)。

原因是0字符不能出现在多字节UTF-8数据中。因此,如果它出现在UTF-8字符串中,它肯定会结束,就像在ASCII中一样。

答案 1 :(得分:3)

标准没有指定用于宽字符函数的编码或大小,因此假设它是UCS2,UCS4或其他任何东西都不可移植。 C11带来了标准化的unicode支持,但我认为现在还要依靠正在实施的方式。您最好的办法是找到一个库来处理UTF8 / UCS4的转换或您可能需要的任何其他编码。

在GNU C库手册中查看iconvcharacter handling一章。