探索Windows:常用基本数据类型和字符编码
让我们与星光探索者一起,探索Windows吧!
常用基本数据类型
windows定义了很多基本数据类型,常用的有下列等效定义
1 |
|
这些是主要的类型,各位小伙伴初次看到时都会感到比较难以下手,我们只需要大概了解就可以了,毕竟有文档在,况且我们可以随时查看这些函数的定义。
这些基本数据类型的定义是有规律的,例如带有P
的表明这个类型是指针类型,例如LPSTR(char*), PVOID(void*),带有STR
的表明这是一个字符串,例如PSTR(char*), PTSTR(TCHAR*),带有C
表示具有const属性例如PCWSTR(const wchar_t *),非常好记。
还有BOOL定义为int,并不是bool,返回BOOL类型时应该返回TRUE(1)或FALSE(0)
字符编码
字符(character)是各位文字和符号的总称,字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。计算机要准确的处理各类字符集,需要进行字符编码。实际上字符都是通过数值表示的。
下面来探索部分字符集:
ASCII 字符集
ASCII (American Standard Code for Information Interchange,美国信息互换标准编码)是基于罗马字母表的一套电脑编码系统,主要用于显示英语和其他西欧语言。ASCII字符集用7位表示一个字符,共128个字符,字符值从0到127,其中32到126是可打印字符。7位编码的字符集只能表示128个字符,为了表示更多的字符,ASCII扩展字符集使用8位(bits)表示一个字符,共256字符。
GB2313字符集
GB2312又称为GB2312-80字符集,全称为《信息交换用汉字编码字符集·基本集》,由原中国国家标准总局发布,1981年5月1日实施。是中国国家标准的简体中文字符集,他收录的汉字已经覆盖99.75%的使用评率,基本满足了汉字的计算机处理需要。
Unicode字符集
Unicode字符集是Universal Multiple-Octet Coded Character Set 通用多八位编码字符集的简称,支持现今世界各种不同语言的书面文本的交换、处理及显示。
因此Win32程序使用不同的字符集,将调用不同的API函数。
下列代码展示如何处理各种字符集的打印方式:
1 |
|
编译并运行这段代码,看到printf正常打印,wprintf打印不出正确内容的运行结果(各位可以尝试一下,wprintf打印宽字符集,也就是Unicode字符,目前大多都是不成功的)
为什么会这样呢?因为wprintf目前对Unicode的支持还不是很好,为了能正常打印,在Windows我们可以使用WriteConsole函数,看下列代码:
1 |
|
这样一编译,可以看到程序正确打印,非常好。
本期到此结束,下期看星光探索者探索Windows如何创建自己的窗口和探索消息机制