字符集編碼的簡單概述

2021-08-04 11:41:51 字數 1585 閱讀 9706

字元編碼的發展歷程:

階段1:

計算機只認識數字,我們在計算機裡一切資料都是以數字來表示,因為英文符號有限,所以規定使用位元組的最高位都是0,每乙個直接都是以0~127之間的數字來表示,比如a對應65,a對應97.這就是美國標準資訊交換碼-ascll

階段2:

隨著計算機在全球的普及,很多國家和地區都把自己的字元引入了計算機,比如漢字。

此時發現乙個位元組能表示數字範圍太小,不能包含所有的中文漢字,那麼就規定使用兩個位元組來表示乙個漢字。

規定:原有的ascll字元的編碼保持不變,仍然使用乙個位元組表示,為了區別乙個中文字元與兩個ascll碼字元,中文字元的每乙個直接最高位規定為1(中文的二進位制是負數),這個規定就是gb2312編碼。

後來在gb2312的基礎上增加了更多的中文字元,比如漢字,也就出現了gbk。

階段3:

新的問題,在中國是認識漢字的,但是如果把漢字傳遞給其他國家,該國家的碼表中沒有收錄漢字,其實就顯示另乙個符號或亂碼。為了解決各個國家因為本地化字元編碼帶來的影響,咱們就把全世界所有的符號統一進行編碼-unicode編碼。unicode的編碼字元都占有2個位元組大小。

常見的字符集:

ascll:佔乙個位元組,只能包含128個字元,不能表示漢字。

iso-8859-i(latin-1):佔乙個位元組,收錄西歐語言,不能表示漢字。

ansi:占用兩個位元組,在簡體中文的作業系統中ansi就指的是gb2312。

gb2312/gbk/gb2312/gbk/g18030:佔兩個位元組,支援中文。

utf-8:是一種針對unicde的可變長度字元編碼,又稱萬國碼,是unicode的實現方式之一。編碼中的第乙個位元組仍與ascll相容,這使得原來處理ascll字元的軟體無須或只須做少部分修改,即可繼續使用。因此,它主鍵成為電子郵件、網頁及其他儲存或傳達文字的應用中,有限採用的編碼。網際網路工程工作小組(ietf)要求所有網際網路協議都必須支援utf-8編碼。

注意:utf-8+bom:是微軟搞出來的編碼,預設佔3個位元組,不要使用這個,很容易出現亂碼。

儲存字母、數字和漢字:

儲存字母和數字無論是什麼字符集都佔1個位元組。

儲存漢字:gbk家族佔兩個位元組,utf-8家族佔3個位元組。

字元的編碼和解碼操作:

編碼:把字串轉換為byte陣列

解碼:把byte陣列轉換為字串

一定要保證編碼和解碼的字元相同,否則亂碼。

下面一段**演示一下轉換:

public class encodingdemo 

}

執行結果:

字符集 編碼

字符集概念 1 字符集 可以表示的字元和字元對應計算機位元組碼的對映 2 字元編碼方式 計算機中用來表示和傳輸如前所述字符集中對映的位元組碼的編碼方式。對於ascii和gb2312等字符集,他們在傳輸和計算機表示時的位元組碼不用編碼,直接用字元對應的位元組碼表示。但比如unicode 字符集,就有多...

字符集編碼

喬哥 小萌,聽說你去面試了,怎麼樣啊?小萌 哎 喬哥,你給我講講什麼是字符集和編碼唄,ascii,utf 8,utf 16,utf 32又是啥?喬哥 好的,在搞懂字符集先來講講什麼是編碼吧 在計算機底層,比如說你的名字 小萌 在計算機中並不是文字的形式,而是一串二進位制數字,如 0110011001...

字符集編碼

references 字元編碼中ascii unicode和utf 8的區別 ascii碼 unicode編碼 utf 8編碼的區別 條目ascii unicode utf 8 占用byte數 12,不常用的字元占用4個 變長的編碼方式,將乙個unicode字元編碼成1 6個字元。常用的英文本母被編...