字符集和Unicode編碼以及字庫


字符集和字符編碼的關系 :

字符集是書寫系統字母與符號的集合,為每一個「字符」分配一個唯一的 ID(學名為碼位 / 碼點 / Code Point);字符集種類較多,每個字符集包含的字符個數不同,常見的字符集名稱:ASCII字符集、GB2312字符集、GB18030字符集、UNICODE字符集等。

字符編碼則是將字符映射為一特定的字節或字節序列,是一種規則,將「碼位」轉換為字節序列的規則(編碼/解碼 可以理解為 加密/解密 的過程)。通常特定的字符集采用特定的編碼方式(即一種字符集對應一種字符編碼(例如:ASCII、IOS-8859-1、GB2312、GBK,都是即表示了字符集又表示了對應的字符編碼)),因此基本上可以將兩者視為同義詞

Unicode和Unicode編碼:

Unicode是一個字符編碼的標准規范,而UTF-8/UTF-16/UTF-32只是對這個標准規范的具體實現,可稱為Unicode編碼

 

Unicode 目前規划的總空間是17個平面(平面0至16,開頭是0x0-----0x10),0x0000 至 0x10FFFF。每個平面有 65536 個碼點。2字節:2^16=65536,4字節:2^32=4,294,967,296

0平面是2字節字符,1-16平面是4字節字符。

BMP 的字符是 Unicode 中最基礎和最常用的一部分,以 UTF-16 編碼時使用2字節,以 UTF-8 編碼時使用1至3字節。

超出 BMP(平面0) 的字符以 UTF-16 或 UTF-8 編碼都需要4字節。

另外還有一個比較少用的編碼形式,UTF-32,它編碼任何 Unicode 字符都需要4個字節。

17*65536 = 1,114,112,32位可容納下所有的碼點

由於目前unicode的表的大小可以算到如果使用utf-32編碼的話,用32個bit就能完全容納下所有的碼點,所以utf-32的特點是每一個字符編碼后都是4個字節,是定長的,相對的utf-8和utf-16都是變長的

1、ASCII碼 :128個字符。

特殊的:

0-9是48-57

A-Z 是65-90

a-z 是97-122

2、Unicode(UTF-16)

聯盟為每個字母中的每個柏拉圖字母分配了一個魔幻數字,其寫法如下:U + 0639。這個幻數稱為代碼點

3、UTF-8

在UTF-8中,從0-127的每個代碼點都存儲在一個字節中【ASCALL碼】。實際上,只有代碼點128和更高的代碼點才使用2、3(最多6個字節)存儲相比於只使用英文字母的美國人使用UTF-8比使用UTF-16減少一半內存

 

傳統的“兩字節存儲”方法稱為UCS-2(因為它有兩個字節)或UTF-16(因為它有16位)

4、沒有純文本這樣的東西。

如果您在內存,文件或電子郵件中有字符串,則必須知道它的編碼格式,否則將無法解釋它或將其正確顯示給用戶。

5、亂碼

如果字符集和字符編碼兩者之間的轉換規則不統一標准,就會亂碼現象。簡單的說亂碼的出現是因為:編碼和解碼時用了不同或者不兼容的字符集。

字庫

 字庫就是字型庫(FONT LIBRARY),其實計算機上顯示的每個字符(不管它是哪種語言的),都是一個小的圖案。字庫就是把這些小的圖案以圖片的某種形式保存起來,需要顯示的 時候還原出來就可以了。在WINDOWS操作系統里的字庫存放在系統盤windows/fonts文件夾下,在linux操作系統中字庫存放在這/usr /share/fonts/文件夾下。

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM