UTF-8版的strlen

 

from :

http://wangcong.org/blog/archives/357

这里看到这么一个计算UTF-8字符串长度的程序:

C:
  1. int my_strlen_utf8_c(char *s) {
  2.   int i = 0, j = 0;
  3.   while (s[i]) {
  4.     if ((s[i] & 0xc0) != 0x80) j++;
  5.     i++;
  6.   }
  7.   return j;
  8. }

 

不解。查wikipedia,得一表:
00000000 00000000 0zzzzzzz 0zzzzzzz
00000000 00000yyy yyzzzzzz 110yyyyy 10zzzzzz
00000000 xxxxyyyy yyzzzzzz 1110xxxx 10yyyyyy 10zzzzzz
000wwwxx xxxxyyyy yyzzzzzz 11110www 10xxxxxx 10yyyyyy 10zzzzzz

顿悟。

posted on 2012-10-15 13:49  Orz..  阅读(699)  评论(0)    收藏  举报

导航