unicode編碼和utf 8編碼詳解

2021-07-16 15:23:59 字數 1841 閱讀 9671

unicode是國際通用編碼,

utf-8編碼是unicode編碼在網路之間(主要是網頁)傳輸時的一種「變通」和「橋梁」編碼。utf-8在網路之間傳輸時可以節約資料量。所以,使用作業系統無法搜尋出txt文字。

按照utf-8創始人的願望:

端(unicode)——傳輸(utf-8)——端(unicode),

但是,後來,許多**開發者在開發網頁時直接使用utf-8編碼。

端(utf-8)——傳輸(utf-8)——端(utf-8)

所以,在瀏覽器上看到的編碼是:unicode(utf-8)。正因為在瀏覽器上這麼並列地列出unicode(utf-8),造成許多網友(甚至不少程式設計師)誤認為unicode=utf-8。其實,按照utf-8創始人的原意,在開發網頁時使用utf-8編碼是錯誤的做法,並且,早期的瀏覽器也不支援解析utf-8編碼。但是,眾人的力量是巨大的,微軟不得不「趨炎附勢」,在瀏覽器上支援解析utf-8編碼。

問題是:utf-8編碼影響了**開發者,或者說,**開發者「擴充套件」了utf-8編碼的使用範圍。但是,**開發者仍然無法影響各類文件的開發者,所以,word文件和一些國際通用的文件仍然使用unicode編碼而不使用utf-8編碼。

事實上計算機只認識0 和

1,然而我們卻可以通過計算機來顯示文字,這就是靠編碼實現的。編碼其實就是約定的乙個協議,比如

ascii

編碼約定了大寫字母

a 對應十進位制數

65,那麼在讀取乙個字串的時候,看到

65,計算機就知道這是大寫字母

a 的意思。

由於計算機是美國人發明的,所以這個

ascii

編碼設計時只採用

1 個位元組儲存(事實上只用了

7 位,

1 個位元組有

8 位),包含了大小寫英文本母、數字和一些符號。但是計算機在全世界普及之後,

ascii

編碼就成了乙個瓶頸,因為

1 個位元組是完全不足以容納各國語言的。

大家都知道英文只用

26 個字母就可以組成不同的單詞,而漢字光常用字就有好幾千個,至少需要

2 個位元組才足以存放,所以後來中國制訂了

gb2312

編碼,用於對漢字進行編碼。

然後日本為自己的文字制訂了

shift_jis

編碼,南韓為自己的文字制訂了

euc-kr

編碼,一時之間,各國都制訂了自己的標準。不難想象,不同的標準放在一起,就難免出現衝突。這也正是為什麼最初的計算機總是容易看到亂碼的現象。

為了解決這個問題,

unicode

編碼應運而生。

unicode

組織的想法最初也很簡單:建立乙個足夠大的編碼,將所有國家的編碼都加進來,進行統一標準。

沒錯,這樣問題就解決了。但新的問題也出現了:如果你寫的文字只包含英文和數字,那麼用

unicode

編碼就顯得特別浪費儲存空間(用

ascii

編碼只占用一半的儲存空間)。所以本著能省一點是一點的精神,

unicode

還創造出了多種實現方式。

比如常用的

utf-8

編碼就是

unicode

的一種實現方式,它是可變長編碼。簡單地說,就是當你的文字是

ascii

編碼的字元時,它用

1 個位元組存放;而當你的文字是其它

unicode

字元的情況,它將按一定演算法轉換,每個字元使用

1~3

個位元組存放。這樣便實現了有效節省空間的目的。

unicode和utf8編碼詳解

大家都知道計算機只能處理數字,所以在計算機中其他字元都需要先轉換為數字0和1才能處理。每8個bit作為乙個位元組,乙個位元位表示乙個乙個字元,乙個位元組就能表示255個字元。而乙個位元組足以表示所有的美國字元,所以美國人編寫了自己的ascii編碼,作為自己的統一編碼。但是漢字不止255個,所以中國用...

Unicode編碼和utf 8編碼的區別

字符集 是一堆字元組成的集合,用來指定位元組或者字串對映成二進位制的規則 在計算機中儲存的,無論是位元組還是字串都是以二進位制模式儲存的。因為計算機只能處理數字,如果要處理文字,就必須先把文字轉換為數字才能處理。最早的計算機在設計時採用8個位元 bit 作為乙個位元組 byte 所以,乙個位元組能表...

帶你了解 Unicode和UTF 8編碼知識

一直以來總是對 unicode,utf 8 等編碼知識懵懵懂懂的,尤其是在做專案過程中只要涉及到幾個編碼之間的轉換,都得到網上搜尋一番,根據別人的經驗照葫蘆畫瓢,才能解決問題,但是私底下卻完全不懂在做什麼。我再也不願意重複這種狀態了,於是就花了乙個上午的時間,將這些知識整理了一遍。如果您覺得我的總結...