我们都知道微软采用了两种字符集编码格式,一种是unicode编码;另一种便是多字节编码格式。那他们之间的关系是什么呢?好的,让我们先看下面一段程序:
TCHAR* p = _T("it学吧");
// 多字节字符集
int a = sizeof(p); //===???
int b = _tcslen(p);//===???;
// 在UNICODE字符集下
int c = sizeof(p); //===???
int d = _tcslen(p);//===???
这道题已经可以体现unicode和多字节之间有什么区别了。首先呢,_tcslen这个函数在是一个宏定义,定义如下:
#ifdef _UNICODE
#define _tcslen wcslen
#else
#define _tcslen strlen
#endif
上面的表述清楚明了,也就是说:
附:
通常我们说汉字是占用2字节(GB-2312)。
具体依据汉字编码形式有所不同:
GB-231280 编码为 2个字节(Byte) 包含了 20902 个汉字,其编码范围是 0x8140-0xfefe。
GB18030-2000(GBK2K) 在 GBK 的基础上进一步扩展了汉字,增加了藏、蒙等少数民族的字形。编码是变长的,其二字节部分与 GBK 兼容;四字节部分是扩充的字形、字位,其编码范围是首字节 0x81-0xfe、二字节0x30-0x39、三字节 0x81-0xfe、四字节0x30-0x39