UTF是“Unicode Transformation Format”的缩写,可以翻译成Unicode字符集转换格式,即怎样将Unicode定义的数字转换成程序数据。Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求.
UTF-8以字节为单位对Unicode进行编码。
UTF-16以两个字节为单位对Unicode进行编码。
UTF-32以字节为四个单位对Unicode进行编码。
|
char
data_utf8[]={0xE6,0xB1,0x89,0xE5,0xAD,0x97};
//UTF-8编码
char16_t
data_utf16[]={0x6C49,0x5B57};
//UTF-16编码
char32_t
data_utf32[]={0x00006C49,0x00005B57};
//UTF-32编码
|
这里用char、char16_t、char32_t分别表示无符号8位整数,无符号16位整数和无符号32位整数。UTF-8、UTF-16、UTF-32分别以char、char16_t、char32_t作为编码单位。(注: char16_t 和 char32_t 是 C++ 11 标准新增的关键字。如果你的编译器不支持 C++ 11 标准,请改用 unsigned short 和 unsigned long。)“汉字”的UTF-8编码需要6个字节。“汉字”的UTF-16编码需要两个char16_t,大小是4个字节。“汉字”的UTF-32编码需要两个char32_t,大小是8个字节。根据字节序的不同,UTF-16可以被实现为UTF-16LE或UTF-16BE,UTF-32可以被实现为UTF-32LE或UTF-32BE。
使用最多的就是UTF-8了
Unicode编码(十六进制) |
UTF-8 字节流(二进制)
|
000000-00007F
|
0xxxxxxx
|
000080-0007FF
|
110xxxxx 10xxxxxx
|
000800-00FFFF
|
1110xxxx 10xxxxxx 10xxxxxx
|
010000-10FFFF | 11110xxx10xxxxxx10xxxxxx10xxxxxx |
UTF-8编码规则:如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的位数,其余各字节均以10开头.
参考百度百度百科:http://baike.baidu.com/link?url=Fqul4n_k6HN72Eke4x0HzrsK27EAeOORjUFWeN5nZWgWuDlX5suck2CwodZd5bLt1aq-73lvtTTDY1TLsLkjs_