3

我需要确定 C 中 UTF-8 字符串的长度(以字节为单位)。如何正确执行?据我所知,在 UTF-8 中,终端符号的大小为 1 字节。我可以为此使用strlen函数吗?

4

2 回答 2

11

我可以为此使用 strlen 函数吗?

是的,strlen给你第一个'\0'字符之前的字节数,所以

strlen(utf8) + 1

utf8包含 0 终止符的字节数,因为'\0'在 UTF-8 中除了包含 0 字节之外没有其他字符。

当然,这只有在utf8实际上是 UTF-8 编码时才有效,否则您需要先将其转换为 UTF-8。

于 2013-05-02T14:34:03.957 回答
2

是的,strlen() 将简单地计算字节直到它遇到 NUL,它是 0 终止的 UTF-8 编码的 C 字符串的正确终止符。

于 2013-05-02T14:33:38.257 回答