所謂的短字元,就是用8bit來表示的字元,典型的應用是ascii碼.而寬字元,顧名思義,就是用16bit表示的字元,典型的有unicode.
w版本和a版本的api
windows 支援 unicode 和 ascii 編碼的字元。windows 系統 api 凡是以字串作為引數的 很多具有 w 和 a 兩個版本以實現兩種不同編碼的字元處理。
以messagebox為例:在程式進行編譯和連線時,如果程式在unicode環境下,會使用messageboxw, 否則使用 messageboxa。
unicode與ascii的轉換
windows 專門提供了若干個 api 來實現對字元編碼的轉換工作。widechartomultibyte、 multibytetowidechar、unicodetobytes函式可以完成這些工作。
widechartomultibyte 函式將 unicode 字串轉換為多位元組字串,以適應 a 版本的 api;
multibytetowidechar函式將多位元組字串轉換為了unicode字串,以適應w版本 的 api 的引數形式要求。
eg:
#include
#include
using namespace std;
//將單位元組char*轉化為寬位元組wchar_t*
wchar_t* ansitounicode( const char* szstr )
cout<< "ansitounicode nlen = " << nlen << endl;
wchar_t* presult = new wchar_t[nlen];
multibytetowidechar( cp_acp, 0, szstr, -1, presult, nlen );
return presult;
} //將寬位元組wchar_t*轉化為單位元組char*
char* unicodetoansi( const wchar_t* szstr )
cout<< "unicodetoansi nlen = " << nlen << endl;
char* presult = new char[nlen];
widechartomultibyte( cp_acp, 0, szstr, -1, presult, nlen, null, null );
return presult;
}int _tmain(int argc, _tchar* argv)
字元編碼 unicode編碼
1.ascii american standard code for information interchange 美國資訊交換標準 這是計算機上最早使用的通用的編碼方案。那個時候計算機還只是拉丁文本的專利,根本沒有想到現在計算機的發展勢頭,如果想到了,可能一開始就會使用unicode了。當時絕大...
A 字元編碼
請將一串長度為5的純字母文字譯成乙個密碼,密碼規律如下 用原來的字母後面的第4個字母代替原來的字母。如c用g代替 文字中不存在w w x x y y z z等字母 最後得到的文字即為密碼。輸入一串文字,長度固定為5。輸出對應的密碼。格式為 password is 密碼 input chinaoutp...
字元編碼 字元編碼的奧秘
字元編碼相信是每個程式設計師的噩夢,只要是有中文的地方,總是會遇到各種編碼的問題,並且這種問題還非常難纏,尤其在linux上,因為上面很多軟體都是針對 英語國家開發的,是不會考慮其他語種編碼問題。在遇到編碼的無數大坑之後,我決定仔細研究下編碼問題,因為這就像一道坎一直橫在你面前,每次到這裡你都會 跌...