MFC中Unicode和多字节字符集

在MFC中,右键项目属性 ->配置属性 ->字符集,可以选择多字节字符集(MBCS)或者Unicode字符集。

MFC默认是Unicode 字符集。

在程序生成中,是通过定义 _MBCS和_UNICODE来区分两种字符集的。注意,符号_MBCS 与_UNICODE是相互排斥的。

(1)Unicode字符集

Unicode 被认为是宽字符,每个字符的16位宽而不是8位宽。最开始的128个Unicode字符是ASCII(0x0000到0x007F)。为了便于代码转换,在Unicode里面的各个字符块同样基于现有的标准。

在MFC中,如果定义了_Unicode宏,TCHAR会被定义为w_char_t类型(16位字符编码类型)。CString 是基于TCHAR的数据类型,因此由16位字符组成。

(2)多字节字符集

MBCS字符集,字符的宽度可以是一个字节,也可以是两个字节。如果字符的宽度是两个字节,那么它的第一个字节就是一个特殊的前导字节,该字节根据所使用的代码页从某个特定范围选定的。前导字节和尾字节合起来指定一个唯一的字符编码。

在MFC中,如果定义了_MBCS宏,TCHAR将被映射到char。默认CString由char类型组成,如果同时使用了单字节和双字节字符,需要自行判断哪些是前导字符,哪些是尾字节。因为双字节字符DCBS的存在,一个字符串的字符长度不能由字节数量决定,而是要解析后才能判断,每个字符要被检查是不是双字节的前导字节。







你可能感兴趣的:(unicode,编码,mfc)