你為什麼用utf-8?不用gbk?

測試叔叔


使用 UTF-8 而不是用 GBK 主要有以下幾點原因:

1、UTF-8 比 GBK 使用更廣泛

UTF-8 自 1993 年在聖地牙哥舉行的 USENIX 會議已廣泛應用於各種操作系統中,無論是我們現在用 PC 、移動設備以及服務器默認都使用的是 UTF-8 編碼,UTF-8 已經成為一種廣泛使用的國際標準。而反觀 GBK 編碼不僅僅發佈的時間要晚「1995 年發佈」,大多數時候僅僅是在國內或華語區使用。

上圖是谷歌所記錄的2001年至2012年主要編碼的使用情況[1],UTF-8在2008年超過了所有其他數據,2012年使用率接近50%


2、UTF-8 支持的語言更多

UTF-8 支持世界上所有國家的字符,而 BGK 僅僅對中文的支持不較好,對其他國家語言的支持可以說是無。

3、對互聯網的支持

互聯網工程工作小組(IETF)要求所有互聯網協議都必須支持 UTF-8 編碼,這就造成所有與互聯網相關的相關的軟件全部都必須支持 UTF-8,而我們目前又處於互聯網時代,任何人、任何軟件、任何文件都需要通過互聯網來傳播,那麼使用 UTF-8 就順理成章了,當 UTF-8 編碼必須使用而又能夠滿足要求的情況下,我想沒有人會 GBK 重新生成一遍了把。

4、存儲空間

GBK 編碼使用定長的 2 字節來存儲中文,使用單字節和雙字節兩種方式來表示 ACSII ,最終通過將最高為置 1 來識別中文字符。而 UTF-8 編碼則是用以解決國際上字符的一種多字節編碼,它對英文使用8位(即一個字節),中文使用 24 位(三個字節)來編碼。對於英文字符較多的文件則用 UTF-8 節省空間。


綜上,由於 UTF-8 是國際性字符編碼使用更廣泛、支持世界上所有國家的字符、是互聯網協議必須支持的編碼,並且節省空間,因此在非特殊情況下優先選用 UTF-8 編碼。


keinYe


# 因為UTF-8是國際通用的, 而 GBK 是中國標準, 前者更有普適性.


UTF-8是Ken Thompson於1992年創建的一種針對Unicode的可變長度字符編碼. 至於Ken Thompson這位大牛, 不知道的可以去看看他是何許人也!

最初大家使用的最多的就是ASCII碼, ASCII碼只有一個字節不能夠直接處理中文, 於是中國定製了GB2312編碼, 把中文給編進去了, 並且是增加了字節來進行編碼的. 這樣全世界的國家都去對自己的語言來編碼, 就會造成混亂.

這個時候Unicode橫空出世, 把所有語言都統一到了一套編碼. 但是Unicode編碼通常使用2個字節, 對於很偏僻的字符, 需要更多字節, 於是存在浪費空間的情況.

UTF-8的出現就對Unicode進行了改善, 使可變長的字符編碼. 對於常用的英文字母使用1個字節, 漢子通常是3個, 而不常用的坑你會被編碼為更多字節. 這樣分類決定字節多少, 大大節省了空間. 也使得UTF-8編碼被廣泛應用於互聯網來進行數據傳輸.

GBK編碼雖然解決了中文編碼的問題, 但是其通用性和效率是不如UTF-8的.


分享到:


相關文章: