zeerd's blog     Article     Search     About     Tags     Pebble     Feed

闲来生雅趣,无事乐逍遥。对窗相望雪,一盏茶香飘。

the real length of utf8 string

#Linux #String #Utf8


本函数用于计算Utf8字符的实际占位长度。

我们都知道,无论字符编码是什么类型,一个中文汉字在控制台下都占两个字节的位置。
为了能够精确地制表,我们必须知道一个UTF8字符串的实际占位长度。

下面函数可以做到这个。

int utf8_strlen(const char *str)
{
    int i, s=0, len = strlen(str);

    for(i=0;i<len;i++) {
        if(!(str[i]&0x80) || ((str[i]&0xC0) == 0xC0)) {
            s++;
        }
    }
    return (s+len)/2;
}