C++实例:判断字符串是否UTF8编码
编码原理
先看这个模板:
UCS-4 range (hex.) UTF-8 octet sequence (binary)
0000 0000-0000 007F 0xxxxxxx
C++实例:判断字符串是否UTF8编码
编码原理
先看这个模板:
UCS-4 range (hex.) UTF-8 octet sequence (binary)
0000 0000-0000 007F 0xxxxxxx
0000 0080-0000 07FF 110xxxxx 10xxxxxx
0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-001F FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
0020 0000-03FF FFFF 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
0400 0000-7FFF FFFF 1111110x 10xxxxxx ... 10xxxxxx
编码步骤:
1) 首先确定需要多少个8bits(octets)
2) 根据上述模板填充每个octets的高位bits
3) 把字符的bits填充至x中,字符挨次:低位→高位,UTF8挨次:最终一个octet的最末位x→第一个octet位x
依据UTF8编码,最多可由6个字节组成,所以UTF8是1-6字节编码组成
C++代码如下:
int IsTextUTF8(char* str,ULONGLONG length)
{
int i;
DWORD nBytes=0;//UFT8可用1-6个字节编码,ASCII用一个字节
UCHAR chr;
BOOL bAllAscii=TRUE; //假如全部都是ASCII, 说明不是UTF-8
for(i=0;i=0x80)
{
if(chr>=0xFC
else if(chr>=0xF8)
nBytes=5;
else if(chr>=0xF0)
nBytes=4;
else if(
C++实例-判断字符串是否UTF8编码 来自淘豆网m.daumloan.com转载请标明出处.