{eval=Array;=+count(Array);}
GBK是微軟為簡(jiǎn)體中文而制定的本地編碼,在工信部被案。各個(gè)國(guó)家或地區(qū)都會(huì)制定并使用各自的本地編碼,一些企業(yè)也會(huì)制定某個(gè)國(guó)家或地區(qū)的本地編碼(GBK就是微軟制定的簡(jiǎn)體中文編碼)。一份用本地編碼編寫(xiě)的文件在不指明所用的本地編碼時(shí)被打開(kāi)就可能看到亂碼的現(xiàn)象。
為了解決本地編碼的亂象,統(tǒng)一編碼(UNICODE)和ISO這兩個(gè)組織都著手制定能容納各國(guó)文字而不沖突的文字編碼系統(tǒng),目前這兩個(gè)組織相互承認(rèn),并且編碼兼容。
目前很多計(jì)算機(jī)系統(tǒng)已使用2字節(jié)(16位整數(shù))或4字節(jié)(32位整數(shù))的統(tǒng)一編碼,統(tǒng)一編碼只說(shuō)明每個(gè)字符的編碼,但沒(méi)有說(shuō)明如何將編碼存放入存儲(chǔ)介質(zhì)上。
由于目前計(jì)算機(jī)系統(tǒng)有高字節(jié)在前和低字節(jié)在前兩種整數(shù)存放模式,因此采用高字節(jié)在前存放的數(shù)據(jù)在低字節(jié)在前的系統(tǒng)中就會(huì)出現(xiàn)異常,反之亦然。同時(shí),我們知道許多編程系統(tǒng)在處理字符串時(shí)會(huì)將值為0的字節(jié)認(rèn)為是字符串的結(jié)束,而無(wú)論是高字節(jié)在前還是低字節(jié)在前的字符串,都會(huì)在字符串中出現(xiàn)大量值為0的字節(jié),這時(shí)傳統(tǒng)的字符串處理函數(shù)就無(wú)法使用了。
為了解決統(tǒng)一編碼如何存放的問(wèn)題并兼容現(xiàn)有的字符串處理函數(shù),就推出了UTF8編碼,這個(gè)編碼規(guī)定了統(tǒng)一編碼的存放方式,并且保證依然使用值為0的字節(jié)作為字符串的結(jié)束符,這樣就可以依然使用原有的字符串處理函數(shù)而不必新開(kāi)發(fā)一套了。
當(dāng)然UTF8也存在一個(gè)問(wèn)題,這就是它是變長(zhǎng)編碼。一個(gè)統(tǒng)一編碼的字符可能會(huì)編碼為一個(gè)字節(jié)、二個(gè)字節(jié)、三個(gè)字節(jié)、四個(gè)字節(jié)(版本1)或六個(gè)字節(jié)(版本2)。
回答這個(gè)問(wèn)題前先了解下什么叫字符集。
計(jì)算機(jī)里面只有高電平和低電平,用數(shù)字表達(dá)就是0101,二進(jìn)制。二進(jìn)制可以和八進(jìn)制,十進(jìn)制,十六進(jìn)制轉(zhuǎn)換。
那么計(jì)算機(jī)如何表述文字呢,英文,簡(jiǎn)體中文,繁體中文,日語(yǔ),等文字呢?
各國(guó)都設(shè)計(jì)了不同的對(duì)應(yīng)關(guān)系,將數(shù)字和文字對(duì)應(yīng)起來(lái)。這就有了下面不同的字符集。
GB2312、GBK、GB18030 - 中文
BIG5 - 中文繁體
KS X 1001、EUC-KR、ISO-2022-KR - 韓文
JIS X 0208 - 日文
但以上每種字符集都只收錄了本國(guó)的文字,需要顯示不同國(guó)家的文字,還需要設(shè)置不同的字符集,很不方便。
這個(gè)時(shí)候UNICODE就出現(xiàn)了,統(tǒng)一了字符集,將各國(guó)的文字都編碼進(jìn)去了。
但完整在計(jì)算機(jī)里面表述Unicode需要4個(gè)自己,這個(gè)時(shí)候就有了各種不同的編碼規(guī)則。
比如utf8,utf16,utf32之類的。其中utf8是最經(jīng)濟(jì)實(shí)惠的(空間占用最少)。
這樣既實(shí)現(xiàn)了處理各國(guó)文字,有實(shí)現(xiàn)了不亂碼,無(wú)需轉(zhuǎn)碼之類的。
咱也不敢說(shuō),utf支持中文,國(guó)內(nèi)為什么不作為標(biāo)準(zhǔn),一些專家自以為是,啥都自成一套,自己給自己挖坑,目光真是遠(yuǎn)大
window默認(rèn)使用gbk,一個(gè)漢字占用2個(gè)字節(jié)的空間,gbk對(duì)中文和英語(yǔ)支持是可以,但別的很多語(yǔ)言的文字不能顯示。Linux默認(rèn)使用UTF-8,一個(gè)漢字占用3個(gè)字節(jié)的空間,UTF-8又稱萬(wàn)國(guó)碼,所有的語(yǔ)言的文字都能顯示。
互聯(lián)網(wǎng)上用的最多的是UTF-8,window平臺(tái)下很多軟件保存文本還是gbk格式的多。
utf8是國(guó)際標(biāo)準(zhǔn),適合西方和亞洲文字,當(dāng)然中文也沒(méi)問(wèn)題。國(guó)內(nèi)銷(xiāo)售的軟件必須符合國(guó)標(biāo),所以必須符合gb18030標(biāo)準(zhǔn),于是就只能gbk了,Windows本來(lái)是支持utf8的,為了符合中國(guó)國(guó)標(biāo)只能gbk。
gbk和utf8可以互相轉(zhuǎn)換,但還是無(wú)法100%保證不亂碼。
gb18030,gbk,unicode是字符編碼,是各個(gè)組織或者國(guó)家制定的針對(duì)字符(或者叫符號(hào))的一種編碼方式。utf8是傳輸編碼,是為了解決unicode在英語(yǔ)世界存儲(chǔ)或者傳輸過(guò)程中,帶寬浪費(fèi)的問(wèn)題,兩者不是同一類標(biāo)準(zhǔn),不可以互相比較
0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答