1.為什么需要編碼
? ??????計(jì)算機(jī)只能處理數(shù)字,如果要處理文本吓歇,就必須先把文本轉(zhuǎn)換為數(shù)字才能處理雳窟。一個(gè)字節(jié)能表示的最大的整數(shù)就是255尊浪,如果要表示更大的整數(shù)匣屡,就必須用更多的字節(jié)。
2.常見(jiàn)幾種編碼
● ?ASCII編碼:
? ? ? ? 計(jì)算機(jī)是美國(guó)發(fā)明的拇涤,最開(kāi)始只有127個(gè)字符(常用英文和符號(hào))捣作,用一個(gè)字節(jié)就可以全部表示。
● ?GB2312:
? ? ? ? 漢子遠(yuǎn)不止127個(gè)鹅士,所以至少用兩個(gè)字節(jié)表示券躁。所以中國(guó)標(biāo)準(zhǔn)制定了GB2312,里面包含了常用的漢字掉盅。GBK基于GB2312也拜,包含更多生僻字,支持簡(jiǎn)繁雙體趾痘;GB18030基于GBK慢哈,包含更多生僻字,支持少數(shù)民族文字永票。
● ?Unicode
? ? ? ? 但是有些文章是多個(gè)國(guó)家混合語(yǔ)言的卵贱,全世界的語(yǔ)言兩個(gè)字節(jié)無(wú)法全部表示。Unicode把所有語(yǔ)言都統(tǒng)一到一套編碼里侣集,這樣就不會(huì)再有亂碼問(wèn)題了键俱。????
● ?uft-8
? ? ? ? 加入一篇文章主要是英文,只是混合了少量其他國(guó)家語(yǔ)言世分。這時(shí)候存儲(chǔ)一個(gè)英文字符编振,本來(lái)只需要1個(gè)字節(jié),用Unicode需要多個(gè)字節(jié)臭埋。所以出現(xiàn)了“可變長(zhǎng)編碼”的UTF-8編碼党觅。UTF-8編碼把一個(gè)Unicode字符根據(jù)不同的數(shù)字大小編碼成1-6個(gè)字節(jié),常用的英文字母被編碼成1個(gè)字節(jié)斋泄,漢字通常是3個(gè)字節(jié),只有很生僻的字符才會(huì)被編碼成4-6個(gè)字節(jié)镐牺。????
? ? ? ? 其他國(guó)家的用戶無(wú)需安裝中文支持就可以直接瀏覽utf-8的中文網(wǎng)站炫掐。
? ? ? ? 在計(jì)算機(jī)內(nèi)存中,統(tǒng)一用Unicode中編碼睬涧,比如記事本編輯的時(shí)候募胃,從文件讀取的UTF-8字符被轉(zhuǎn)換為Unicode字符到內(nèi)存里,編輯完成后畦浓,保存或傳輸時(shí)再把Unicode轉(zhuǎn)換為UTF-8痹束。
3.全角和半角
? ??????全角占兩個(gè)字節(jié),半角占一個(gè)字節(jié)讶请,半角全角主要是針對(duì)標(biāo)點(diǎn)符號(hào)來(lái)說(shuō)的祷嘶。不管全角半角漢字都占用兩個(gè)字節(jié)屎媳。搜狗里用shift+space切換全角和半角。
? ? ? ? 漢語(yǔ)等文字語(yǔ)言的字庫(kù)量遠(yuǎn)大于256個(gè)论巍,所以改用兩個(gè)字節(jié)來(lái)儲(chǔ)存烛谊。如果統(tǒng)一使用全角字符的話,排列起來(lái)也顯得整齊嘉汰,英文和其它拉丁文的字符和標(biāo)點(diǎn)也提供了全角格式丹禀。如果全英文或系統(tǒng)命令就用半角即可。