字符集ANSI/Unicode详解
1、ANSI(即MBCS):为多字节字符集,它是不定长表示世界文字的编码方式。ANSI表示英文字母时就和
ASCII一样,但表示其他文字时就需要用多字节。
2、Unicode:用两个字节表示一个字符的编码方式。比如字符’A’在ASCII下面用一个字节表示,而在
Unicode下面用两个字节表示,其中高字节用“0”填充;函数’程’在ASCII下面用两个字节表示,而在
Unicode下面也是用两个字节表示。Unicode的用处就是定长表示世界文字,据统计,用两个字节可以编码
现存的所有文字而没有二义。
3、Windows下的程序设计可以支持ANSI和Unicode两种编码方法的字符串,具体使用哪种就要看定义了
MBCS宏还是Unicode宏。MBCS宏对应的字符串指针为LPSTR(即char*),Unicode对应的指针为
LPWSTR(即unsigned char*)。为了写程序的方便,微软定义了类型LPTSTR,在MBCS下它表示char*,
在Unicode下它表示unsigned char*,这就可以重定义一个宏进行不同字符集的转换了。
4、关系
LPSTR:指向一个字符串的32位指针,每个字符占1个字节。
LPCSTR:指向一个常量字符串的32位指针,每个字符占1个字节。
LPTSTR:指向一个字符串的32位指针,每个字符可能占1个字节或2个字节。
LPCTSTR:指向一个常量字符串的32位指针,每个字符可能占1个字