【編碼】ASCII、ISO 8859-1、Unicode(UTF-8/16/32)

編碼學習筆記,資料來源互聯(lián)網,持續(xù)更新

1 ASCII

  • American Standard Code for Information Interchange,美國信息交換標準代碼。
  • 用7位表示128個字符,針對英語設計。
  1. 0~31、127(33個):控制字符
  2. 32~126(95個):可顯示字符


    ASCII碼對應表

2 ISO 8859-1

用8位表示256個字符

3 Unicode

??很多傳統(tǒng)的編碼方式都有一個共同的問題,即容許電腦處理雙語環(huán)境(通常使用拉丁字母以及其本地語言),但卻無法同時支持多語言環(huán)境(指可同時處理多種語言混合的情況)。
??Unicode(統(tǒng)一碼、萬國碼、單一碼)是為了解決傳統(tǒng)的字符編碼方案的局限而產生的,它為每種語言中的每個字符設定了統(tǒng)一并且唯一的二進制編碼,以滿足跨語言、跨平臺進行文本轉換、處理的要求。

3.1 編碼

??目前的Unicode字符分為17組編排,0x0000 至 0x10FFFF,每組稱為平面(Plane),而每平面擁有65536個碼位,共1114112個。在第0平面中,中文范圍是0x4E00-0x9FA5。

3.2 UTF

??對可以用ASCII表示的字符使用Unicode并不高效,因為Unicode比ASCII占用大一倍的空間,而對ASCII來說高字節(jié)的0對他毫無用處。為了解決這個問題,就出現(xiàn)了一些中間格式的字符集,他們被稱為通用轉換格式,即UTF(Unicode Transformation Format)。常見的UTF格式有:UTF-7, UTF-7.5, UTF-8, UTF-16以及UTF-32。

??在Unicode中,“漢字”兩個字對應的十六進制是分別是0x6c49和0x5b57,通過編碼:

char      data_utf8[]={0xE6,0xB2,0x94,0xE5,0xAD,0x97};//UTF-8編碼
char16_t data_utf16[]={0x6C49,0x5B57};                //UTF-16編碼
char32_t data_utf32[]={0x00006C49,0x00005B57};        //UTF-32編碼

??這里用char、char16_t、char32_t分別表示無符號8位整數(shù),無符號16位整數(shù)和無符號32位整數(shù)。UTF-8、UTF-16、UTF-32分別以char、char16_t、char32_t作為編碼單位?!皾h字”的UTF-8編碼需要6個字節(jié)?!皾h字”的UTF-16編碼需要4個字節(jié)?!皾h字”的UTF-32編碼8個字節(jié)。根據(jù)字節(jié)序的不同,UTF-16可以被實現(xiàn)為UTF-16LE或UTF-16BE,UTF-32可以被實現(xiàn)為UTF-32LE或UTF-32BE。
??下面分別介紹UTF-8/16/32如何編碼。

3.2.1 UTF-8

UTF-8編碼規(guī)則:如果只有一個字節(jié)則其最高二進制位為0;如果是多字節(jié),其第一個字節(jié)從最高位開始,連續(xù)的二進制位值為1的個數(shù)決定了其編碼的字節(jié)數(shù),其余各字節(jié)均以10開頭。UTF-8轉換表表示如下:

Unicode/UCS-4 bit數(shù) UTF-8 byte數(shù)
0000~ 007F 0~7 0XXX XXXX 1
0080~ 07FF 8~11 110X XXXX
10XX XXXX
2
0800~ FFFF 12~16 1110 XXXX
10XX XXXX
10XX XXXX
3
1 0000~ 1F FFFF 17~21 1111 0XXX
10XX XXXX
10XX XXXX
10XX XXXX
4
3.2.2 UTF-16
3.2.3 UTF-32

Reference:

  1. 百度百科-UTF-8
  2. 百度百科-Unicode
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1. ASCII ??我們知道,計算機內部是通過二進制數(shù)據(jù)進行操作的,所有的信息最終都會轉換為一個二進制值,二進制...
    騎著烏龜去看海閱讀 1,855評論 0 4
  • ??計算機是以二進制的形式來存儲數(shù)據(jù)的,它只認識 0 和 1 兩個數(shù)字,我們在屏幕上看到的文字,在存儲之前都被轉換...
    沒我找不到電子書閱讀 3,946評論 0 1
  • 字符是用戶可以讀寫的最小單位。計算機所能支持的字符組成的集合,就叫做字符集。字符集通常以二維表的形式存在。二維表的...
    劉惜有閱讀 8,388評論 2 14
  • Linux 三個特殊進程: PID 0 idle進程 特點:1、系統(tǒng)自建的首個進程 2、創(chuàng)建運行內核空間 3、系統(tǒng)...
    way180閱讀 402評論 0 0
  • 已經很長時間沒有用過13月亮歷了,在接觸奇跡課程之后,對于很多分類、層次劃分的東西比較抵觸,但是每次看到13月亮歷...
    心空站閱讀 414評論 0 2

友情鏈接更多精彩內容