打了雞血鞋吉,一天二更
之前也說過字符串是一種數(shù)據(jù)類型绎晃,但是它比較特殊,主要是因為編碼問題柏靶。既然如此物邑,先搞清楚下計算機編碼的相關(guān)內(nèi)容溜哮。
計算機編碼
- 只處理數(shù)字,要處理文本就得先把文本轉(zhuǎn)為數(shù)字才能處理色解。
- 早期設(shè)計 8 bit 表示一個字節(jié)茂嗓,一字節(jié)表示最大整數(shù) 11111111=十進制255
- 兩字節(jié)可表示最大65535,四字節(jié)4294967295
- 世界上有上百種語言科阎,不同的國家可能有不同的標準述吸,例如 ASCII 和 GB
ASCII編碼:
美國人最早只把127個字母編碼進計算機去,大小寫英文字母锣笨、數(shù)字和符號蝌矛。例如大寫 A 編碼 65,小寫 z 編碼是122错英。
GB2312編碼:
我國為了計算機處理中文(需要至少兩個字節(jié))入撒,創(chuàng)建的一種與 ASCII 編碼不沖突的編碼。
Unicode標準/編碼
因為各國標準不一椭岩,創(chuàng)的編碼也許完全不同茅逮,所以會不可避免地出現(xiàn)沖突璃赡,結(jié)果就是在多語言混合的文本當中,顯示出來一堆的亂碼献雅。于是乎碉考,Unicode標準就是在此時應運而生,將所有語言統(tǒng)一到一套編碼里面挺身。
- 常用兩個字節(jié)表示一個字符侯谁,非常偏僻的字符用上 4 個
- 現(xiàn)代大多數(shù)操作系統(tǒng)和編程語言都支持該編碼
ASCII與Unicode的區(qū)別:
- ASCII編碼是 1 字節(jié),而Unicode通常是2字節(jié)
- ASCII編碼中章钾,A 是十進制的65(010000001)良蒸,字符 0 是十進制的48(00110000)(注意‘0’和0不同)。漢字已經(jīng)超出 ASCII 編碼范圍伍玖,而 Unicode 的十進制是20013(01001110 00101101)
- 如果要將 ASCII 編碼中的 A 改為 Unicode 編碼,前面補 0 即可:00000000 01000001
UTF-8編碼:
- 如果全是用 Unicode 編碼剿吻,亂碼解決了窍箍,但是寫的文本全英,用 Unicode 編碼比 ASCII 編碼需要多一倍的存儲空間丽旅,在存儲和傳輸上就非常不劃算椰棘。于是乎節(jié)約版“可變長編碼”UTF-8又橫空出世。
- 把 Unicode 字符根據(jù)不同數(shù)字大小編寫成 1-6 個字節(jié):
常用英文字幕編成1字節(jié)
漢字通常編寫成3個字節(jié)榄笙,很生僻的字符編寫成 4-6 個字節(jié) - 優(yōu)點:
如果傳輸?shù)奈谋景罅坑⑽淖址澳瑢⒐?jié)省大部分空間
大量支持 ASCII 編碼的歷史遺留軟件可以在 UTF-8 編碼下繼續(xù)工作。
目前計算機系統(tǒng)通用的字符編碼工作方式
- 在計算機內(nèi)存中茅撞,統(tǒng)一使用 Unicode 編碼帆卓,當需要保存到硬盤或者傳輸?shù)臅r候就轉(zhuǎn)換成為 UTF-8 編碼。
- 使用筆記本編輯時:
- 瀏覽器:
很多網(wǎng)頁上的源碼有類似<meta charset="UTF-8" />的信息,表示該網(wǎng)頁正是用的 UTF-8 編碼拄查。
好多文字...基本上搬過來了吁津,嘛,隨便看看得了