使用Unicode字符集出現亂碼問題

2021-08-22 16:21:46 字數 2558 閱讀 1278

mfc中unicode與ascii碼轉換

unicode

碼:unicode

碼也是一種國際標準編碼,採用二個

位元組編碼,與ascii

碼不相容。它前

128個字元就是

ascii

碼,之後是擴充套件碼。

ascii

碼:american standard code for information interchange

,美國資訊交換標準**。標準ascii

碼也叫基礎

ascii

碼,使用7 位

二進位制數

(剩下的1

位二進位制為

0)來表示所有的大寫和小寫字母,數字0 到

9、標點符號,

以及在美式英語中使用的特殊

控制字元。

mfc工程中字符集的設定

在mfc工程屬性->配置屬性中->常規中->專案預設值->字符集中,有使用unicode字符集的設定。

該字符集設定為unicode字符集後,常用的cstring的初始化,格式化介面,需要用到_t巨集。此外,在char型陣列轉化為cstring中,常常有亂碼出現。下面總結一下,出現亂碼後的解決方法。

當字符集設定成」使用多位元組字符集」時,

將cstring轉化成char型資料指標:

cstring file;

char

* pfile = (

lpstr

)(lpcstr

)file;

將char型資料轉化為cstring,不需要新增_t巨集:

cstring

info;

char

version[20];

"ldmp sn: [%s] .."

, version);

當字符集設定成」使用unicode字符集」時,

cstring與char型資料相互轉化如下:

void

cstringtochar(

cstring

str,

char

*dst)

將char轉化為cstring方法:

直接使用格式化字串。

cstring

info;

char

version[20];

"ldmp sn: [%s] ..")

, version);

2.使用以下方法也可以轉化

cstring

chartocstring(

char

* str)

multibytetowidechar(

cp_acp

, 0,

str, -1, pwtext, dwnum);

cstring

cstr = pwtext;

delete

(char

*)pwtext;

#else

cstring cstr(str);

#endif

return

cstr; }

附:gb2312,big5,unicode編碼轉換方法

//gb2312

轉換成unicode:

wchar_t* gb2312tounicode(constchar* szgbstring)

//big5

轉換成unicode:

wchar_t* big5tounicode(constchar* szbig5string)

//unicode

轉換成gb2312:

char* unicodetogb2312(constwchar_t* szunicodestring)

//unicode

轉換成big5:

char* unicodetobig5(constwchar_t* szunicodestring)

//正體中文

big5

轉換成簡體中文

gb2312

char* big5togb2312(constchar* szbig5string)

//簡體中文

gb2312

轉換成正體中文

big5

char* gb2312tobig5(constchar* szgbstring)

Unicode字符集和多字符集

由於各國語言的加入,ascii已經不能滿足資訊交流的需要,因此,為了能夠表示其它國家的文字,各國在ascii的基礎上制定了自己的字符集,它們正式的名稱應該是mbcs multi byte chactacter system,即多位元組字元系統 型別說明 unicode ansi 通用型別 字元wch...

雜記 Unicode字符集

unicode是字符集,但是微軟在windows上把unicode視為utf 16,即乙個字元佔2個位元組16位。utf 16是unicode的一種編碼規則,與此同時還有utf 8 utf 32。utf 8將一些字元編碼為1個位元組,一些字元編碼為2個位元組,一些字元編碼為3個位元組,一些字元編碼為...

Unicode字符集詳解

一句來自 三國 中的話 分久必合合久必分,各個字符集之間也存在的分久必合的現象。隨著國際標準iso10646規定的通用字符集 ucs,全稱universal mutiple octet doded character set 的發布,各種字符集之間不統一和諧的問題就得到了改觀。utf編碼,全稱是un...