ANSI與寬字元轉換

2021-07-05 11:55:03 字數 2373 閱讀 8237

c語言

ansi轉轉寬字元-mbstowcs

char

test[64];

sprintf(test, "hello char! \n");

printf("%s", test);

wchar_t

testt[64];

intnret = mbstowcs(testt, test, sizeof(testt));

wprintf(l

"%s",testt);

寬字元轉ansi-wcstombs

wchar_t

testo[64];

swprintf(testo, l

"hello wchar ! \n");

wprintf(l

"%s",testo);

char

testf[64];

wcstombs(testf, testo, sizeof(testf));

printf("%s \n", testf);

windows平台

ansi轉轉寬字元:multibytetowidechar(uintcodepage,

dword dwflags,

lpcstr lpmultibytestr,

int cchmultibyte,

lpwstr lpwidecharstr,

int cchwidechar)

codepage

:指定執行轉換的多位元組字元所使用的字符集

,可以使用

cp_acp。

dwflags:一組位標記用以指出是否未轉換成預作或

寬字元(若組合形式存在),是否使用象形文本替代

控制字元

,以及如何處理無效字元。一般取值為0時。

lpmultibytestr:指向待轉換的字串的緩衝區。

cchmultibyte:指定由引數lpmultibytestr指向的字串中位元組的個數。可以設定為-1,會自動判斷lpmultibytestr指定的字串的長度

lpwidecharstr:指向接收被轉換字串的緩衝區。

cchwidechar:指定由引數lpwidecharstr指向的緩衝區的寬位元組數。若此值為0,函式不會執行轉換,而是返回目標快取lpwidechatstr所需的寬字元數。

寬字元轉ansi:widechartomultibyte(uint codepage,

dword dwflags,

lpcwstr lpwidecharstr,

int cchwidechar,

lpstr lpmultibytestr,

int cchmultibyte,

lpcstr lpdefaultchar,

lpbool pfuseddefaultchar)

lpdefaultchar和pfuseddefaultchar:只有當widechartomultibyte函式遇到乙個寬位元組字元,而該字元在ucodepage引數標識的**頁中並沒有它的表示法時,widechartomultibyte函式才使用這兩個引數。(通常都取值為null)

如果寬位元組字元不能被轉換,該函式便使用lpdefaultchar引數指向的字元。如果該引數是null(這是大多數情況下的引數值),那麼該函式使用系統的預設字元。該預設字元通常是個問號。這對於檔名來說是危險的,因為問號是個萬用字元。

pfuseddefaultchar引數指向乙個

布林變數

,如果unicode字串中至少有乙個字元不能轉換成等價多位元組字元,那麼函式就將該變數置為true。如果所有字元均被成功地轉換,那麼該函式就將該變數置為false。當函式返回以便檢查寬位元組字串是否被成功地轉換後,可以測試該變數。

使用:

ansi轉寬字元

char

test[64];

sprintf(test,"hello char ! \n");

printf("%s",test);

wchar_t

testt[64];

intnret = multibytetowidechar(cp_acp,0,test, -1, testt,sizeof(testt));

wprintf(l

"%s",testt);

寬字元轉ansi

wchar_t testo[64];

swprintf(testo,l

"hello wchar !\n");

wprintf(l

"%s",testo);

char testf[64];

widechartomultibyte(cp_oemcp,0,testo, -1, testf,sizeof(testf),null,false);

printf("%s\n",testf);

ANSI與Unicode字元巨集轉換

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

ANSI字元和UNICODE字元的轉換

此方法經常用於vc寫的dll或ocx函式的返回值中,而且此dll或ocx函式是供vb或js呼叫的。函式返回使用下面的格式返回 return sysallocstring bstr wtext wtext是轉換後的unicode字串 或 return sysallocstring bstr stext...

ansi字元,unicode字元

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