字符編碼知識的整理

1、基礎知識

概念

  1. 字符串:是由零個或多個字符組成的有限序列。
  2. 字符:包括各國家文字、標點符號、圖形符號、數字等。
  3. 字符集:多個字符的集合。

計算機要準確的處理各類字符集文字,就須要進行字符編碼,以便計算機可以識別和存儲各類文字。網絡

  1. 字符編碼(字集碼):是把字符集中的字符編碼爲指定集合中某一對象(例如:比特模式、天然數序列、8位組或者電脈衝),以便文本在計算機中存儲和經過通訊網絡的傳遞。

舉例

  • 常見字符集名稱:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。
  • 通常狀況下一個字符集對應一種字符編碼,可是Unicode比較特殊,存在多種字符編碼標準,好比:UTF-8,UTF-16,UTF-32等。
  • 一張不徹底分類圖:
    一張圖
  • 更多

2、字符編碼

常見的。編碼

1. ASCII碼

  • 美國製定的編碼系統,主要用來表示現代英語和其餘西歐語言。
  • 首先:1 byte = 8bit 因此 1個字節可表示256種符號
  • ASCII碼佔用了1個字節的後7位,最高位統一爲0,可表示128個字符,包括大小寫字母、數字、標點符號和美式英語中使用的特殊控制字符。
  • ASCII對照表
  • 好比:
二進制 十進制 十六進制 字符 解釋
0011 0001 49 0x31 1 字符1
0100 0001 65 0x41 A 大寫字母A
0110 0001 97 0x61 a 小寫字母a
  • 問題 :不夠用~

2. 擴充ASCII編碼

  • 問題:同一個編碼值,在不一樣的編碼體系裏表明着不一樣的字。
  • 好比中文,1個字節確定是不夠的,必須使用多個字節表示一個符號。GB2312採用兩個字節表明一個漢字,理論上能夠表示256 * 256 = 65536個符號。

3. Unicode編碼

  • 目的:統一全部文字編碼。
  • 0x00000x10FFFF,共1114112個,分爲17組,每組稱爲平面(plane),每平面擁有65536(2的16次方)個碼位。
  • 一般會用「U+」而後緊接着一組十六進制的數字來表示這一個字符。
  • U+0000~U+FFFF基本多文種平面 ( BMP:Basic Multilingual Plane, 簡稱「零號平面」, plane 0)
    2個字節表示(例如U+4AE0,共支持六萬多個字符)
  • 其他16個平面爲輔助平面,以代理對(surrogate pair)的形式,用4個字節的值來儲存。
  • 問題:編碼效率不高,好比UCS-4(Unicode的標準之一)規定用4個字節存儲一個符號,那麼每一個英文字母前都必然有三個字節是0,這對存儲和傳輸來講都很耗資源。

UTF: Unicode Transfer Format,即把Unicode轉作某種格式的意思.net

分類 位數 長度 編碼規則 其餘
UTF-8 8位序列編碼,即以字節爲單位 變長編碼 按照不一樣範圍,能夠有1-4字節的不一樣長度 保留了ASCII字符的編碼作爲它的一部分,XML及其子集HTML採用UTF-8做爲標準字集
UTF-16 16位序列編碼 長度相對固定 0x10000之內的字符,使用2字節表示,超出部分使用4字節表示
UTF-32 32位序列編碼 長度始終固定 使用4字節表示
相關文章
相關標籤/搜索