Ansi 與 Unicode 字串型別的互相轉換

2022-04-01 01:18:04 字數 1390 閱讀 2444

widechartomultibyte 實現寬位元組轉換到窄位元組

multibytetowidechar 實現窄位元組轉換到寬位元組

widechartomultibyte 的**頁用來標記與新轉換的字串相關的**頁;

multibytetowidechar 的**頁用來標記與乙個多位元組字串相關的**頁,

[1]、常用的**頁有 cp_acp 和 cp_utf8 兩個:

使用 cp_acp **頁就實現了 ansi 與 unicode 之間的轉換;--- 我們所用的!

使用 cp_utf8 **頁就實現了 utf-8 與 unicode 之間的轉換。

[2]、dwflags 引數允許我們進行額外的控制,但是,一般情況下都不使用這個標誌,直接傳遞 0 就行了。

[3]、lpdefaultchar和pfuseddefaultchar:只有當widechartomultibyte函式遇到乙個寬位元組字元,而該字元在ucodepage引數標識的**頁中並沒有它的表示法時,widechartomultibyte函式才使用這兩個引數。如果寬位元組字元不能被轉換,該函式便使用lpdefaultchar引數指向的字元。如果該引數是null(這是大多數情況下的引數值),那麼該函式使用系統的預設字元。該預設字元通常是個問號。這對於檔名來說是危險的,因為問號是個萬用字元。pfuseddefaultchar引數指向乙個布林變數,如果unicode字串中至少有乙個字元不能轉換成等價多位元組字元,那麼函式就將該變數置為true。如果所有字元均被成功地轉換,那麼該函式就將該變數置為false。當函式返回以便檢查寬位元組字串是否被成功地轉換後,可以測試該變數。

● 兩個轉換函式的使用舉例:

char *cctrywidechartoansi(wchar_t *pwidechar)

return pszbuf;

}wchar_t* p = l"這個是寬位元組轉窄位元組";

char* buf = cctrywidechartoansi(p);

wchar_t *cctryansichartowide(char *pchar)

return pszbuf;

}char* p = "窄位元組轉寬位元組";

wchar_t* result;

result = cctryansichartowide(p);

最後記得delete ..

〓※※※〓 使用過後千萬別忘記釋放空間…… delete...

也可以使用 

● a2w、w2a、t2a、t2w 巨集的使用以及注意事項

a2w,就是ansi轉unicode

w2a,就是unicode轉ansi

uses_conversion; //記得加上這句

wchar_t* pw = l"你好,這個是寬位元組轉窄位元組\r\n";

char* p = w2a(pw);

ansi字元,unicode字元

編碼指不同國家的語言在計算機中的一種儲存和解釋規範 ansi與ascii 最初,internet上只有一種字符集 ansi的ascii字符集 american standard code for information interchange,美國資訊交換標準碼 它使用7 bits來表示乙個字元,總...

ANSI與Unicode字元巨集轉換

ansi 操作函式以 str開頭,如 strcpy strcat strlen unicode 操作函式以 wcs開頭,如 wcscpy wcscpy wcslen ansi unicode 操作函式以 tcs 開頭 tcscpy c執行期庫 ansi unicode 操作函式以 lstr 開頭ls...

Unicode與多字符集(ANSI)

一 unicode與多字符集 ansi 是兩種文字編碼方式 1 ansi時,各國文字的編碼之間有些重疊編碼 編碼衝突 2 unicode,各國編碼統一編碼,無論在哪國的作業系統中,各國的文字都能無障礙顯示 3 wchar t是屬於雙位元組變數 4 unicode的字串常量需要在前面加乙個大寫的l,c...