字符 & 字符集 & 字符編碼

字符(Char):是一個信息單位歇式,在計算機(jī)里面掌眠,一個中文漢字是一個字符,一個英文字母是一個字符寥闪,一個阿拉伯?dāng)?shù)字是一個字符太惠,一個標(biāo)點(diǎn)符號也是一個字符。

字符集(Charset):是一個系統(tǒng)所支持的所有的抽象字符的集合橙垢。其中字符為各種文字和符號的總稱垛叨。

字符編碼(Character Encoding):是一套法則,使用該法則柜某,可以使自然語言中的一套字符集合 與 其他東西的一個集合進(jìn)行配對嗽元。即在符號結(jié)合和數(shù)字系統(tǒng)之間建立一套關(guān)系。通俗地講喂击,字符編碼就是將符號轉(zhuǎn)換為計算機(jī)可以接受的數(shù)字系統(tǒng)的數(shù)剂癌,稱為數(shù)字代碼。

常用的字符集:

常見的有:ASCII字符集翰绊,GB2312字符集佩谷,BIG5字符集,Unicode字符集

ASCII字符集和編碼:

ASCII是基于拉丁字母的一套編碼监嗜,主要用于現(xiàn)代英語谐檀,勉強(qiáng)支持西歐語言。

ASCII字符集:包含了控制字符(換行裁奇,退格鍵桐猬,回車鍵),可顯示字符等刽肠。

ASCII編碼:將ASCII字符集轉(zhuǎn)換為計算機(jī)可以識別的編碼規(guī)則溃肪。使用7位(bits)表示一個字符,可以支持128個字符音五。使用8位(bits)表示一個字符惫撰,共支持256個字符

ASCII編碼最大的缺點(diǎn):只能顯示26個基本的英文字符,阿拉伯?dāng)?shù)字躺涝,英式標(biāo)點(diǎn)符號等共256個字符厨钻。

GBXXXX字符集和編碼:

天朝有了計算機(jī)后,必須引入一套規(guī)則,用于將漢子轉(zhuǎn)換為計算機(jī)可以接受的數(shù)字系統(tǒng)的數(shù)莉撇。

天朝專家把127號以后的字符都取消掉呢蛤,并且規(guī)定:小于127的字符的意義與原來相同,大于127的字符棍郎,每兩個連在一起表示一個漢字其障,前面一個字節(jié)成為高字節(jié),后面一個字節(jié)成為低字節(jié)涂佃,這樣大約組合出來7000個左右的漢字励翼,在這些編碼里,連ASCII里本來就有的數(shù)字辜荠,標(biāo)點(diǎn)符號統(tǒng)統(tǒng)重寫編寫了一遍汽抚,這就是常說的“全角”“半角”字符,127以前的稱謂半角字符伯病。

特點(diǎn):采用了多字節(jié)編碼造烁,每個字可以由1,2個或者4個字節(jié)組成

BIG5字符集和編碼:

BIG5字符集主要用來表示“繁體中文”午笛,稱為大5碼惭蟋。它是一套雙字節(jié)字符集,使用了雙八碼存儲方法药磺,使用兩個字節(jié)來安放一個字告组,第一個字節(jié)稱為“高位字節(jié)”,第二個字節(jié)稱為低位字節(jié)癌佩。

偉大的創(chuàng)想-Unicode:

為了解決世界上各種語言的問題木缝,防止互相訪問出現(xiàn)亂碼的情況,產(chǎn)生了Unicode围辙。

Unicode是基于通用字符集發(fā)展的我碟,被稱為統(tǒng)一碼,萬國碼姚建。

Unicode 與 UTF-8 UTF-16 UTF-32:

簡述:Unicode是字符集怎囚,UTF-8/16/32 是三種字符編碼方案:

UTF-32:

使用4個字節(jié)(32位)的數(shù)字來表達(dá)每個字母,數(shù)字桥胞。每個數(shù)字使用4個字節(jié)來表示,就空間效率而言考婴,是非常沒有效率的贩虾。

這種方法也有優(yōu)點(diǎn),因?yàn)槠涿總€字母/數(shù)字使用4個字節(jié)數(shù)字來表示的沥阱,所以一個字符串中的第N個字符是從4*N個字節(jié)開始的缎罢,即每一個字符的長度都是固定的。

UTF-16:

盡管unicode表示的字符非常多,但是通常使用不會超過前65535個字符策精,所以舰始,UTF-16使用2個字節(jié)(16位)的數(shù)字來表示系統(tǒng)中的每個字母,數(shù)字咽袜,符號等丸卷。它最明顯的優(yōu)點(diǎn)就是空間效率上是utf-32的兩倍。

UTF-8:

UTF-8是基于Unicode的一種可變長度的字符編碼,它可以表示Unicode中的任何一個字符询刹,且編碼的第一個字節(jié)與ASCII完全兼容谜嫉。

UTF-8使用一到四個字節(jié)來表示一個字符。

(1) 128個ASCII字符凹联,只需要1個字節(jié)編碼

(2) 帶有附加符號的拉丁文沐兰,阿拉伯文等需要2個字節(jié)編碼

(3) 其他基本多文種平面,通常使用3個字節(jié)編碼

(4) 極少多食用4個字節(jié)編碼

優(yōu)點(diǎn):

UTF-8不存在字節(jié)順序的問題(UTF-16存在),一份以utf-8編碼的文件蔽挠,在不同的計算機(jī)之間住闯,是一份相同的bit流。

UTF-8是ASCII的超集澳淑,因?yàn)橐粋€純ASCII編碼的字符比原,也是一個合法的UTF-8編碼字符。

缺點(diǎn):

因?yàn)槊總€字符使用不同數(shù)量的字節(jié)編碼偶惠,所以一個字符串中想要定位一個字符的位置春寿,就會很復(fù)雜。

Unicode 轉(zhuǎn) UTF-8的規(guī)則:

比如“漢”字忽孽,其Unicode編碼是6C49绑改,6C49在 0800-FFFF之間,所以才用第三套模版轉(zhuǎn)換兄一。

6C49轉(zhuǎn)換成二進(jìn)制是0110 1100 0100 1001 ,把這個比特流轉(zhuǎn)換成第三套模版就是 0110 110001 001001

然后填充到1110xxxx 10xxxxxx 10xxxxxx中x的位置上

即為11100110 10110001 10001001 ?即E6 B1 89 這就是UTF8編碼

一個有趣的問題厘线,當(dāng)你在windows電腦桌面建立一個文本文件,輸入“聯(lián)通”兩個字后出革,重新打開造壮,會出現(xiàn)亂碼。

答:

文本文件的默認(rèn)編碼是ANSI骂束,屬于GBxx系列耳璧,每個漢字采用2個字節(jié)編碼。所以“聯(lián)通”對應(yīng)的編碼為:

可以看到第一個字符的 高位字節(jié)前三位是110 ?低位字節(jié)前2位是10

第二個字符的 高位字節(jié)前三位110展箱,低位字節(jié)前2位是10

這一下就跟UTF-8編碼的第二套規(guī)則相符合旨枯,系統(tǒng)就會認(rèn)為這是utf8編碼,然后在解碼的時候就采用了錯誤的方式混驰,導(dǎo)致了亂碼攀隔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末皂贩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子昆汹,更是在濱河造成了極大的恐慌明刷,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件满粗,死亡現(xiàn)場離奇詭異辈末,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)败潦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門本冲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人劫扒,你說我怎么就攤上這事檬洞。” “怎么了沟饥?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵添怔,是天一觀的道長。 經(jīng)常有香客問我贤旷,道長广料,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任幼驶,我火速辦了婚禮艾杏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘盅藻。我一直安慰自己购桑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布氏淑。 她就那樣靜靜地躺著勃蜘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪假残。 梳的紋絲不亂的頭發(fā)上缭贡,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機(jī)與錄音辉懒,去河邊找鬼阳惹。 笑死,一個胖子當(dāng)著我的面吹牛眶俩,可吹牛的內(nèi)容都是我干的穆端。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼仿便,長吁一口氣:“原來是場噩夢啊……” “哼体啰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嗽仪,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤荒勇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后闻坚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沽翔,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年窿凤,在試婚紗的時候發(fā)現(xiàn)自己被綠了仅偎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡雳殊,死狀恐怖橘沥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情夯秃,我是刑警寧澤座咆,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站仓洼,受9級特大地震影響介陶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜色建,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一哺呜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧箕戳,春花似錦某残、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至走越,卻和暖如春椭豫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背旨指。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工赏酥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谆构。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓裸扶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親搬素。 傳聞我的和親對象是個殘疾皇子呵晨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容