字符集和編碼的區別
ascII、unicode、gb2312等都是字符集,用於定義編號指代的字符。utf-8,utf-16則是unicode的編碼格式。
ascII
ascII只有128個,能表示英文、數字、常用符號。
gb2312
gb2312是中文特有的字符集,有2萬多個字符,前128個和ascII保持一致,因此能兼容ascII。ascII碼用1個字節表示,中文用2個字節表示。gbk是在gb2312基礎上擴容而來的。
unicode
unicode則是為了讓全球能用上統一的字符集而發明的,有6萬多個字符,每個字符占2個字節,比如英文a,ascII是97、unicode則是0097(示意的說法)。中文只收錄最常用的6000多個漢字。unicode雖然是大一統的標准,但是在表示英文時浪費空間,並且許多古老的程序只支持ascII,unicode從標准設計上來說是不兼容ascII。正因如此在實際使用中unicode會以utf-8,utf-16等編碼方式存儲是傳輸。utf-8保持和ascII一致,英文使用1個字節,其他字符使用2-6個字節,比如中文多數是3個字節。