字元編碼 ASCII Unicode UTF 8

2021-07-23 08:43:49 字數 2666 閱讀 6665

ascii編碼

ascii(american standard code for information interchange,美國資訊交換標準**),它主要用於顯示現代英語和其他西歐語言。ascii至今為止共定義了128個字元,其中包括95個可顯示字元和33個無法顯示的控制字元(多數都已經廢除)。

在計算機的最底層,所有的資訊都是用二進位制的串來表示的,每乙個二進位制位(bit)都有0和1兩種狀態,所以8個二進位制位(乙個位元組byte)可以組合出256種狀態。ascii的128個字元,只占用了乙個位元組的後面7位,最高位(b7)一般用作奇偶校驗位。

2023年版ascii編碼速見表

缺點:ascii的侷限在於只能顯示26個基本拉丁字母、阿拉伯數目字和英式標點符號,因此只能用於顯示現代美國英語。

隨著計算機在全世界的流行,使用計算機的人越來越多,不再侷限於使用英語的地區,這時候ascii編碼的問題就出現了–只占用1個位元組的ascii編碼最多只能表示256個字元,那要怎麼才能表示其他的語言呢。要知道,僅僅只是《漢字大字典》中收錄的漢字就有6萬多個,更何況還有很多小地區都有著很多不同的文字。如果任由各個語言的人自行訂立編碼規則的話,那就會造成語言的壁壘了,可能出現廣東的人收到北京的人的郵件一開啟全是亂碼的情況,因為廣東編碼並不相容北京編碼。-_-#

所以需要出現一種很大容量的編碼,將世界上所有的文字字元都囊括在內,每乙個字元都能在其中找到獨一無二的存在。這個時候,unicode編碼粉墨登場了。

unicode編碼

unicode(萬國碼、國際碼、統一碼)是電腦科學領域裡的一項業界標準。它對世界上大部分的文字系統進行了整理、編碼,使得電腦可以用更為簡單的方式來呈現和處理文字。unicode是乙個很大的集合,現在的規模可以容納100多萬個字元,已經收入超過十萬個字元,unicode 是乙個很大的集合,現在的規模可以容納100多萬個符號,每個符號的對應的二進位制都不一樣。unicode 規定可以使用多個位元組表示乙個字元,例如 a 的編碼為 01100001,乙個位元組就夠了,漢字「好」的編碼為 01011001 01111101,則需要兩個位元組。

為了相容ascii,unicode 規定前0~127個字元與ascii是一樣的,不一樣的只是128~255的這一段。完整的unicode編碼請檢視:unicode.org。

問題:

但是unicode只是乙個符號集,它只規定了符號的二進位制**,卻沒有規定這個二進位制**應該如何儲存,也就是並沒有說明在計算機內部實現中二進位制**到底是長得什麼樣子。

比如,漢字」強」的unicode是十六進製制數u+5f3a,轉換成二進位制數為0101 1111 0011 1010,這個字元的表示至少需要2個位元組。表示其他更大的符號,可能需要3個位元組或者4個位元組,甚至更多。

這裡就有兩個嚴重的問題:

1.如何才能區別unicode和ascii或者其他編碼呢?計算機怎麼知道三個位元組表示乙個unicode符號,還是分別表示的三個ascii符號呢?

2.如果unicode統一規定,每個符號用四個位元組的定長表示,而英文本母只用乙個位元組表示就夠了,那麼每個英文本母前都必然有二到三個位元組是0,這對於儲存來說是極大的浪費,文字檔案的大小會因此大出二三倍,這是無法接受的。

utf-8就是在網際網路上使用最廣的一種unicode的實現方式。其他實現方式還包括utf-16(字元用兩個位元組或四個位元組表示)和utf-32(字元用四個位元組表示),不過在網際網路上基本不用。所以兩者之間的關係是:utf-8是unicode的在計算機內部的實現方式之一

utf-8

utf-8(8-bit unicode transformation format)是一種針對unicode的可變長度字元編碼。它可以用來表示unicode標準中的任何字元,且其編碼中的第乙個位元組仍與ascii相容,這使得原來處理ascii字元的軟體無須或只須做少部分修改,即可繼續使用。因此,它逐漸成為電子郵件、網頁及其他儲存或傳送文字的應用中優先採用的編碼。

unicode和utf-8之間的轉換關係表(x表示碼點佔據的位)

碼點的位數

碼點起值

碼點終值

位元組序列

byte 1

byte 2

byte 3

byte 4

7u+0000

u+007f

10******x

11u+0080

u+07ff

2110***xx

10******

16u+0800

u+ffff

31110***x

10******

10******

21u+10000

u+1fffff

411110***

10******

10******

10******

utf-8編碼位元組含義

優點:

缺點:

參考內容:

1.ascii–維基百科(

2.unicode–維基百科(

3.utf-8–維基百科(

4.字元編碼筆記:ascii,unicode和utf-8–阮一峰的網路日誌(

字元編碼 unicode編碼

1.ascii american standard code for information interchange 美國資訊交換標準 這是計算機上最早使用的通用的編碼方案。那個時候計算機還只是拉丁文本的專利,根本沒有想到現在計算機的發展勢頭,如果想到了,可能一開始就會使用unicode了。當時絕大...

A 字元編碼

請將一串長度為5的純字母文字譯成乙個密碼,密碼規律如下 用原來的字母後面的第4個字母代替原來的字母。如c用g代替 文字中不存在w w x x y y z z等字母 最後得到的文字即為密碼。輸入一串文字,長度固定為5。輸出對應的密碼。格式為 password is 密碼 input chinaoutp...

字元編碼 字元編碼的奧秘

字元編碼相信是每個程式設計師的噩夢,只要是有中文的地方,總是會遇到各種編碼的問題,並且這種問題還非常難纏,尤其在linux上,因為上面很多軟體都是針對 英語國家開發的,是不會考慮其他語種編碼問題。在遇到編碼的無數大坑之後,我決定仔細研究下編碼問題,因為這就像一道坎一直橫在你面前,每次到這裡你都會 跌...