ASCII、Unicode和UTF 8編碼的區別 摘要總結: ASCII的編碼是128個字元 GB2312編碼用來把中文編進去的,日本把日文編進Shift_JIS里... Unicode是為瞭解決各國亂碼的,但浪費存儲空間 UTF 8編碼把一個Unicode字元根據不同的數字大小編碼成1 6位元組,英 ...
ASCII、Unicode和UTF-8編碼的區別
摘要總結:
ASCII的編碼是128個字元
GB2312編碼用來把中文編進去的,日本把日文編進Shift_JIS里...
Unicode是為瞭解決各國亂碼的,但浪費存儲空間
UTF-8編碼把一個Unicode字元根據不同的數字大小編碼成1-6位元組,英文字元是1個位元組,漢字通常是3個位元組,生僻字元是4-6個位元組
常用編碼介紹一覽表:
編碼 | 作用 | 所占位元組數 |
---|---|---|
ASCII | 表示英語及西歐語言 | 1bytes |
GB2312 | 國家簡體中文字元集,相容ASCII | 2bytes |
Unicode | 國家標準組織統一標準字元集 | 2bytes |
GBK | GB2312的擴展字元集,支持繁體字,相容GB2312 | 2bytes |
UTF-8 | 不定長編碼 | 1-3bytes |
具體解釋127個字母被編碼到電腦中,也就是大小寫英文字母、數字和一些符號,這個編碼表被成為ASCII編碼,比如大小字母A代表65,小寫字母a代表97。
但是要處理中文顯然一個位元組是不夠的,至少需要兩個位元組,而且還不能和ASCII編碼衝突,所以,中國制定了GB2312編碼,用來把中文編進去。
你可以想到的是,全世界有上百種語言,日本把日本編到Shift_JIS里,南韓把韓文編到Euc-kr里,各國有各國的標準,就不可避免的出現了衝突,結果就是:在多語混合的文本中,顯示出來會亂碼。
因此,Unicode應運而生,Unicode把所有語言都統一到一套編碼里,這樣就不會出現問題了。
Unicode標準也在不斷發展,但最常用的是用兩個位元組表示一個字元(如果要用到非常偏僻的字元,就需要4個位元組)。現代操作系統和大多數編程語言都直接支持Unicode。
新的問題又出現了:如果統一換成Unicode編碼,亂碼的問題就消失了,但是,如果寫的文章里都是英文的話,Unicode編碼比ASCII編碼需要多一倍的存儲空間,在存儲和傳輸上就不划算了。
所以,本著節約的精神,又出現了把Unicode編碼轉化為“可變長編碼”的UTF-8編碼。
UTF-8編碼把一個Unicode字元根據不同的數字大小編碼成1-6個位元組,常用的英文占用1個位元組,漢字通常是3個位元組,只有很生僻的字元才會被編碼成4-6個位元組。如果你要傳輸的文本包含大量英文字元,用UTF-8編碼就能節省空間。
UTF-8編碼有一個額外的好處,就是ASCII編碼實際上可以被看成是UTF-8編碼的一部分,所以大量只支持ASCII編碼的歷史遺留軟體可以在UTF-8編碼下繼續工作。