c - C中的UTF8处理

标签 c unicode utf-8

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

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

谢谢,

最佳答案

GNU 确实有一个 Unicode 字符串库,叫做 libunistring , 但它几乎没有处理任何东西 ICU的确实。

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

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

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

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

关于c - C中的UTF8处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10948234/

相关文章:

c - 输出返回为 0.00

C - fclose() seg fault//如何不覆盖内存//欧氏div alg的C实现

mysql - JSF 编码 UTF-8?

mysql - PHP/MySQL 中的字符集问题

c - 带终止和不带终止的两个不同 while 循环之间的区别?

c++ - 尝试在 cpp 模块中使用汇编代码时出现链接器错误

c++ - Qt 5 中特殊字符无法正确显示

python - 如何在 python 3 中使用 raw_unicode_escape 编码打印字符串?

c++ - 处理 utf-8 字符串 gtk

java - 使用 Java 在 Windows 中读取 UTF-8 格式的 xml 文件会出现 "IOException: Invalid byte 2 of 2-byte UTF-8 sequence."错误