对于处理ASCII我们有strlen,strcat等。
对于UTF16(即UCS2),我们有wcscat
和wcslen
个函数。
对于处理UTF8和UCS4,C中可用的功能有哪些? 假设Linux / gcc
答案 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库手册中查看iconv或character handling一章。