UTF-8字符处理:

参考:http://www.oschina.net/code/snippet_203297_8755

重点是下面的评论。



UTF-8格式字节
4中情况分别是:
1、一个字节: 0XXXXXXX,低7位为有效数据,内码是0x0~0x7f
2、两个字节: 110XXXXX 10YYYYYY,低5位+低6位为有效数据,内码是0x80~0x7ff
3、三个字节:1110XXXX 10YYYYYY 10ZZZZZZ,低4位+低6位+低6位 为有效数据,内码是0x800~0xffff,除掉几个保留的特殊内码
4、四个字节: 11110AAA 10XXXXXX 10XXXXXX 10XXXXXX,低3位 +低6位 +低6位 +低6位为有效数据,内码是0x10000~0x10ffff

按前面1的个数就能区分每个字占了多少个字节。

				if ((c & 0x80) == 0)// 
				{
					++m_iCurLineStrLen;
				}
				else if ((c & 0xE0) == 0xC0)
				{
					m_iCurLineStrLen += 2;
				}
				else if ((c & 0xF0) == 0xE0)
				{
					m_iCurLineStrLen += 3;
				}
				else if ((c & 0xF8) == 0xF0)
				{
					m_iCurLineStrLen += 4;
				}
按这么区分每个字,只要是UTF-8格式的,中英文混排通吃。

你可能感兴趣的:(UTF-8字符处理:)