中文漢字佔二個位元組還是三個位元組長度

2021-08-15 19:27:37 字數 2053 閱讀 1728

英文本母和中文漢字在不同字符集編碼下的位元組數

英文本母:

位元組數 : 1;編碼:gb2312

位元組數 : 1;編碼:gbk

位元組數 : 1;編碼:gb18030

位元組數 : 1;編碼:iso-8859-1

位元組數 : 1;編碼:utf-8

位元組數 : 4;編碼:utf-16

位元組數 : 2;編碼:utf-16be

位元組數 : 2;編碼:utf-16le

中文漢字:

位元組數 : 2;編碼:gb2312

位元組數 : 2;編碼:gbk

位元組數 : 2;編碼:gb18030

位元組數 : 1;編碼:iso-8859-1

位元組數 : 3;編碼:utf-8

位元組數 : 4;編碼:utf-16

位元組數 : 2;編碼:utf-16be

位元組數 : 2;編碼:utf-16le

1、美國人首先對其英文本元進行了編碼,也就是最早的ascii碼,用乙個位元組的低7位來表示英文的128個字元,高1位統一為0;

2、後來歐洲人發現尼瑪你這128位哪夠用,比如我高貴的法國人字母上面的還有注音符,這個怎麼區分,得,把高1位編進來吧,這樣歐洲普遍使用乙個全位元組進行編碼,最多可表示256位。歐美人就是喜歡直來直去,字元少,編碼用得位數少;

3、但是即使位數少,不同國家地區用不同的字元編碼,雖然0–127表示的符號是一樣的,但是128–255這一段的解釋完全亂套了,即使2進製完全一樣,表示的字元完全不一樣,比如135在法語,希伯來語,俄語編碼中完全是不同的符號;

4、更麻煩的是,尼瑪這電腦高科技傳到中國後,中國人發現我們有10萬多個漢字,你們歐美這256字塞牙縫都不夠。於是就發明了gb2312這些漢字編碼,典型的用2個位元組來表示絕大部分的常用漢字,最多可以表示65536個漢字字元,這樣就不難理解有些漢字你在新華字典里查得到,但是電腦上如果不處理一下你是顯示不出來的了吧。

5、這下各用各的字符集編碼,這世界咋統一?**人發封email給中國人,兩邊字符集編碼不同,尼瑪顯示都是亂碼啊。為了統一,於是就發明了unicode,將世界上所有的符號都納入其中,每乙個符號都給予乙個獨一無二的編碼,現在unicode可以容納100多萬個符號,每個符號的編碼都不一樣,這下可統一了,所有語言都可以互通,乙個網頁頁面裡可以同時顯示各國文字。

6、然而,unicode雖然統一了全世界字元的二進位制編碼,但沒有規定如何儲存啊,親。x86和amd體系結構的電腦小端序和大端序都分不清,別提計算機如何識別到底是unicode還是acsii了。如果unicode統一規定,每個符號用三個或四個位元組表示,那麼每個英文本母前都必然有二到三個位元組是0,文字檔案的大小會因此大出二三倍,這對於儲存來說是極大的浪費。這樣導致乙個後果:出現了unicode的多種儲存方式。

7、網際網路的興起,網頁上要顯示各種字元,必須統一啊,親。utf-8就是unicode最重要的實現方式之一。另外還有utf-16、utf-32等。utf-8不是固定字長編碼的,而是一種變長的編碼方式。它可以使用1~4個位元組表示乙個符號,根據不同的符號而變化位元組長度。這是種比較巧妙的設計,如果乙個位元組的第一位是0,則這個位元組單獨就是乙個字元;如果第一位是1,則連續有多少個1,就表示當前字元占用多少個位元組。

8、注意unicode的字元編碼和utf-8的儲存編碼表示是不同的,例如」嚴」字的unicode碼是4e25,utf-8編碼是e4b8a5,這個7裡面解釋了的,utf-8編碼不僅考慮了編碼,還考慮了儲存,e4b8a5是在儲存識別編碼的基礎上塞進了4e25。

9、utf-8 使用一至四個位元組為每個字元編碼。128 個 ascii 字元(unicode 範圍由 u+0000 至 u+007f)只需乙個位元組,帶有變音符號的拉丁文、希臘文、西里爾字母、亞美尼亞語、希伯來文、阿拉伯文、敘利亞文及馬爾地夫語(unicode 範圍由 u+0080 至 u+07ff)需要二個位元組,其他基本多文種平面(bmp)中的字元(cjk屬於此類-qieqie注)使用三個位元組,其他 unicode 輔助平面的字元使用四位元組編碼。

10、最後,要回答你的問題,常規來看,中文漢字在utf-8中到底佔幾個位元組,一般是3個位元組,最常見的編碼方式是1110***x 10****** 10******。

**:

中文漢字佔二個位元組還是三個位元組長度

英文本母和中文漢字在不同字符集編碼下的位元組數 英文本母 位元組數 1 編碼 gb2312 位元組數 1 編碼 gbk 位元組數 1 編碼 gb18030 位元組數 1 編碼 iso 8859 1 位元組數 1 編碼 utf 8 位元組數 4 編碼 utf 16 位元組數 2 編碼 utf 16be...

php漢字佔幾個位元組,php乙個漢字幾個位元組

字元的簡介 在js中,中文佔兩個字元,英文佔乙個字元 在php中,不同編碼下不相同,在gbk gb2312編碼下乙個中文佔2個字元,utf 8 unicode編碼下乙個中文佔3個字元 推薦 php教程 php 位元組 和字元 php在utf 8編碼下,乙個漢字佔3個位元組,gbk編碼下只佔2個位元組...

int為什麼佔4個位元組?乙個位元組為什麼是8位?

不知道大家有沒有思考過這樣的問題,乙個位元組為什麼是8位呀,也許還有小夥伴不知道我說的這些是什麼,沒關係往下看。第乙個解釋 歷史 是ibm為system 360設計了一套8位ebcdic編碼,涵蓋了數字 大小寫字母和大部分常用符號,同時又相容廣泛用於打孔卡的6位bcdic編碼。第二個解釋,二進位制我...