编码历史背景
ASC 7位 128字符 (那个年代内存还是非常昂贵的)
ASCII 8位 256字符 前128和ASC是一样的
DBCS 按照单双字节编码
UNICODE 几乎囊括所有国家的字符(包括多种编码方式)
UTF-16 全部采用16位, 英文多余的地方补0
重点说一下DBCS和UNICODE码
宽字节字符
wchar_t 每个字符占两个字节
char 每个字节占一个
wchar_t 实际上是unsigned short类型,定义时需要增加L,通知编译器按照双字节编译字符串,采用UNICODE编码
需要使用支持wchar_t函数操作宽字节字符串,例如:
wchar_t* pwszText =L"Hello wchar";
wprintf(L"%s\n", pwszText);
TCHAR 数据类型
通过一段定义即可了解 T_CHAR
#ifdef UNICODE
typedef wchar_t TCHAR;
#define _TEXT(quote) L##quote
#else
typedef char TCHAR
#define _TEXT(quote) quote
#endif
系统常用函数得参数类型:
LPSTR === char* LPCSTR === const char*
LPWSTR === wchar_t* LPCWSTR === const wchar_t*
LPTSTR === TCHAR* LPCSTR === const TCHAR*
如果vs选择字符集为UNICODE,则会定义一个UNICODE宏,则很多的参数字符串前都将需要添加L,所以vs要选择字符集为多字节字符集,不适用默认的UNICODE