使用unicode字符集編碼的時候總是會提示,這里不對,那里也不對,由於嫌麻煩,就直接把字符集改成寬字符集。
但是感覺,這樣永遠也無法理解unicode的字符集的使用。
UNICODE:它是用兩個字節表示一個字符的方法。比如字符'A'在ASCII下面是一個字符,可'A'在UNICODE下面是兩個字符,高字符用0填充,而且漢字'程'在ASCII下面是兩個字節,而在UNICODE下仍舊是兩個字節
。UNICODE的用處就是定長表示世界文字,據統計,用兩個字節可以編碼現存的所有文字而沒有二義。
MBCS,它是多字節字符集,它是不定長表示世界文字的編碼。MBCS表示英文字母時就和ASCII一樣(這也是我們容易把MBCS和ASCII搞混的原因),但表示其他文字時就需要用多字節。
那咱們也來初窺一下unicode字符集里的錯誤解決方案:
1、LPTSTR
L ---Long
P ---Pointer
T --- 宏,用於指示是否使用unicode字符集
C ------表示常量
STR-----表示字符串
LPTSTR、LPCSTR、LPCTSTR、LPSTR的意義:
LPSTR:32bit指針 指向一個字符串,每個字符占1字節
LPCSTR:32-bit指針 指向一個常字符串,每個字符占1字節
LPCTSTR:32-bit指針 指向一個常字符串,每字符可能占1字節或2字節,取決於Unicode是否定義
LPTSTR:32-bit指針 每字符可能占1字節或2字節,取決於Unicode是否定義
在中文系統環境下如果啟用了Unicode支持,LPTSTR代表的是WCHAR *
2、在啟用了Unicode字符集的時候,如果遇到參數不能從const char * 轉為LPCWSTR的情況下,
1)可以更改字符集
2)字符串使用_T("")表示 char 換成TCHAR
3) 頭文件包含#include<tchar.h>