天天看點

字元集的一些了解

https://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html

主要參見如上文章,

可以了解如下:

電腦中所有的字元都是由0和1組成的,為了表示字元,人們以 8位 作為一個整體進行了編碼。在二進制下,8位長度總共可以表示 2的7次方=256個字元。(假設編号為1-256)

這就是最原始的ASCII 字元集。

由于不能滿足中文的需求,于是國家在此基礎上進行了調整,即:編号1-127個字元與ASCII 字元集的前127個字元相同,編号128-256的兩個字元符号連接配接在一起表示一個漢字,于是就可以表示 128 X 128  = 16384個漢字。這就是GB2312字元集。實際上隻用了7000多個漢字,同時還收錄了日語的假名,數學和羅馬字元等。

由于這種方式僅能保證在某一個地區内可能可以通用。是以需要一個更為統一的标準,于是就有了Unicode字元集。(注意:JVM中所有的字元均為Unicode字元)

Unicode字元集分為3種:

最原始的UTF-32:這種字元集,使用4個位元組(4 X 8 位)來表示一個字元,最多可以表示1114112個。 囊括了世界上絕大多數語言及相關字元。保證了每個字元對應的編碼的唯一性。(來源:https://baike.baidu.com/item/Unicode)

缺點:4個位元組表示一個字元,使得系統對于字元的操作效率大大降低。

于是誕生了UTF-16字元集。

UTF-16:由于人們常用的字元也就是在 2 的(2 X 8 = 16)次方,也就是65536 個字元之内,是以通常用兩個位元組來表示一個字元已經足以滿足絕大多數的情況。極少數需要這65536個字元之外的字元時,采用特殊方式處理。

UTF-8:是一種針對Unicode的可變長度字元編碼。優勢劣勢的話參見原文章。目前最為通用的編碼。