字元編碼 ASCLL and UNICODE

2021-06-17 15:33:00 字數 1324 閱讀 2330

所謂的短字元,就是用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上,因為上面很多軟體都是針對 英語國家開發的,是不會考慮其他語種編碼問題。在遇到編碼的無數大坑之後,我決定仔細研究下編碼問題,因為這就像一道坎一直橫在你面前,每次到這裡你都會 跌...