Windows核心編程(3)字符編碼詳解-創(chuàng)新互聯(lián)

一、字符編碼 詳細(xì)介紹

創(chuàng)新互聯(lián)2013年開(kāi)創(chuàng)至今,先為商水等服務(wù)建站,商水等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢(xún)服務(wù)。為商水企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

1.字節(jié)(Byte)是一種計(jì)量單位,他是計(jì)算機(jī)信息技術(shù)存儲(chǔ)容量的一種單位


2.字符的意義: 字符數(shù)計(jì)算機(jī)文字中使用的文字和符號(hào),比如1,2,3,4,~,@,!,%,^等待

3.在不同編碼里字符和字節(jié)對(duì)應(yīng)的關(guān)系不同

a.在ASCLL碼中,一個(gè)英文字母(不區(qū)分大小寫(xiě))占一個(gè)字節(jié)(8bit),一個(gè)漢子占兩個(gè)字節(jié)(16bit)

b.UTF-8編碼中,一個(gè)英文字符等于一個(gè)字節(jié),一個(gè)中文(含繁體)等于三個(gè)字節(jié)

c.在Unicode編碼中,一個(gè)英文兩個(gè)字節(jié), 一個(gè)中文(含繁體)占兩個(gè)字節(jié)

d.英文符號(hào)占一個(gè)字節(jié),中文符號(hào)占兩個(gè)字節(jié)

4.多字符集 : 各國(guó)文字編碼喲重疊的編碼(編碼沖突)導(dǎo)致亂碼

a.最開(kāi)始,internet上只有一種字符集------ANS的ASCLL字符集,他用7bits表示一個(gè)字符,


總共表示128個(gè)字符,包括英文字母,數(shù)字,標(biāo)點(diǎn)符號(hào),之后進(jìn)行擴(kuò)展,使用8bits表示一個(gè)字符

可以表示256個(gè)字符, 再原來(lái)的7bits基礎(chǔ)上加入了一些特殊字符.

b.后來(lái)各國(guó)語(yǔ)音的加入,ASCLL已經(jīng)不能滿(mǎn)足需求,各國(guó)都在ASCLL的基礎(chǔ)上制定了自己的

字符集, 這些從ANSL標(biāo)準(zhǔn)派生的字符集被習(xí)慣的稱(chēng)為ANSL字符集

正式名稱(chēng)MBCS(Multi-Byte Chactacter System,即多字節(jié)字符系統(tǒng)),每種語(yǔ)言都有自己的字符集

導(dǎo)致各種字符集實(shí)在太多,在國(guó)際交流中非常不便, 因此提出了Unicode字符集,

它固定使用16 bits(兩個(gè)字節(jié)、一個(gè)字)來(lái)表示一個(gè)字符,共可以表示65535個(gè)字符,將世界上

所有語(yǔ)音常用字符都收錄其中,(Unicode標(biāo)準(zhǔn)稱(chēng)為UTF-16),后來(lái)為了能使雙字節(jié)的Unicode

能夠在現(xiàn)存的處理單字節(jié)系統(tǒng)上正確傳輸,出現(xiàn)了UTF-8,使用MBCS的方式對(duì)Unicode進(jìn)行編碼.

UTF-8是編碼,它屬于Unicode字符集,

5.Windows定義了一些數(shù)據(jù)類(lèi)型

a.wchar_t 就是兩個(gè)字節(jié) 帶有W的都是這個(gè)類(lèi)型

b.WCHAR Unicode字符 他其實(shí)就是wchar_t

c.PWSTR 指向Unicode字符串的指針 wchar_t *

d.PCWSTR 指向一個(gè)常量的Unicode const wchar_t *

e.對(duì)應(yīng)多字節(jié)的類(lèi)型為 CHAR,LPSTR,LPCSTR

f.ASNL/Unicode通用數(shù)據(jù)類(lèi)型,

TCAHR 多字符集中為char, Unicode中為wchar_t

PTSTR 多字符集中為char *, Unicode中為wchar_t *

LPCTSTR 多字符集中為const char *, Unicode中為const wchar_t *

f.帶有A就是多字符集, W就是Unicode(款字符),T就是通用的

7.Windows中多字符集和Unicode相互轉(zhuǎn)化的API

a.WideCharToMultiByte 映射一個(gè)Unicode字符串到多字節(jié)字符串

b.MultiByteToWideChar 映射一個(gè)多字節(jié)字符串到Unicode字符串


8.函數(shù) 使用上面的函數(shù)比較復(fù)雜  則可以使用下面的宏函數(shù)

使用之前要先聲明標(biāo)識(shí)符 USES_CONVERSION;

A2W: 將多字節(jié) 轉(zhuǎn) 寬字節(jié)

USES_CONVERSION
CString str;
char* AChar = "abcdefg";
wchar_t* WChar = A2W(AChar); 
str = WChar;

W2A: 將款字節(jié) 轉(zhuǎn) 多字節(jié)

USES_CONVERSION;
wchar_t* AChar = L"abcdefg啊";
char* WChar = W2A(AChar);

T2A: T代表跟隨系統(tǒng) 轉(zhuǎn) 多字節(jié)

USES_CONVERSION;  
char * pChar="char to cstring";  
CString cTemp=A2T(pChar);

T2W: 系統(tǒng)類(lèi)型 轉(zhuǎn) 款字節(jié)

SES_CONVERSION;  
CString cTemp =_T("char to cstring");  
char * pChar=A2T(pChar);

9.謹(jǐn)慎使用上面的宏函數(shù)轉(zhuǎn)換

a.如果你在一個(gè)循環(huán)里使用這個(gè)函數(shù) 可能會(huì)引起堆棧溢出

因?yàn)槟悴榭创a發(fā)現(xiàn)他函數(shù)里面會(huì)調(diào)用alloc申請(qǐng)內(nèi)存,他會(huì)在函數(shù)的棧中分配,

VC編譯器默認(rèn)是2M,在一個(gè)循環(huán)中調(diào)用這個(gè)函數(shù)就會(huì)一直分配內(nèi)存.

b.解決辦法最好是使用 WideCharToMultiByte  MultiByteToWideChar

這兩個(gè)API,  把這兩個(gè)API封裝一下, 使用就很方便了.

10.使用THAR _TEXT 可以同時(shí)適應(yīng)Unicode和多字節(jié)字符集

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。

標(biāo)題名稱(chēng):Windows核心編程(3)字符編碼詳解-創(chuàng)新互聯(lián)
URL地址:http://muchs.cn/article24/cdgoje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷(xiāo)推廣商城網(wǎng)站、網(wǎng)站改版、面包屑導(dǎo)航、網(wǎng)站收錄搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)