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...