簡單說說utf 8編碼格式

2022-04-28 15:42:08 字數 1241 閱讀 5497

提到utf-8,腦海裡立馬出現了unicode。那什麼是utf-8, 什麼是unicode呢?簡要說一下。

unicode(universal multiple-octet coded character set,ucs) 是由國際組織設計,可以容納全世界所有語言文字的編碼方案。

utf (ucs transformation format ) 是實現unicode的方法,utf-8 就是其中乙個(以8位作為乙個編碼單元)版本。另外還有utf-16(16位為乙個編碼單元),utf-32(32位為乙個編碼單元)

ok,現在先不說這些太專業的東西。用數的表示來說,

想想,如果我們的前輩們規定,0要寫成0000,3要寫成0003,50要寫成0050…… 

你是不是覺得很蛋疼?很費事?直接表示成0,3,50……方便省事

utf-8就是做了這麼一件事。把8位以內能表示的unicode編碼用乙個位元組表示,16位以內能表示的unicode編碼用兩個位元組表示,同理,24位3位元組,32位4位元組

但是,計算機儲存資料是連續的二進位制數0,1表示的,比如:10111011001001100000111010111100001110……

天曉得你**是8位乙個字元,**是16位乙個字元……

utf-8就提供了一種用連續的0,1表示,還能區分1位元組、2位元組,3位元組、4位元組的處理方案。

看圖(截圖來自:

上圖表示了字元編碼對應的utf-8二進位制表示,可見規則如下:

單位元組字元(比如ascii對應字元):最高位用0表示

多位元組字元(比如中文字元):第乙個位元組用n個1 表示,後面位元組前兩位為10n表示該字元的位元組數

這麼一來就可以以位元組為單位處理資料了(自己想象的,只為理解處理過程,實際未必真是這樣):

1、取出乙個位元組

2、如果該位元組的最高位是0,按單位元組字元處理,找到對應unicode編碼。轉1;否則,轉3

3、識別該位元組前面有幾位1,記為n,向後再取n-1個位元組,找到以這n個位元組表示的數對應的編碼。轉1

注意:上圖中的二進位制數中,只有xx表示的部分才是unicode碼,其它都是標誌)

總結:unicode是乙個能表示世界上所有語言的編碼集合;utf-8是一種unicode實現方式。

MariaDB設定編碼格式為UTF 8

資料庫安裝完以後 登入資料庫 然後輸入命令 show variables like character 就像這樣 你會發現編碼格式不是utf 8 然後找到mariadb的配置檔案 my.ini 我是在根目錄的data資料夾下找到的 然後添兩行命令 在 client 欄位裡加入 default cha...

介紹utf8編碼

utf8並不算是一種電腦編碼,而是一種儲存和傳送的格式,如前所述,每個unicode ucs字元都以 2或4個bytes來儲存,看看以下的比較 以 i am chinese 為例 用ansi儲存 12 bytes 用unicode ucs2儲存 24 bytes 2 bytes header 用uc...

UTF8編碼 解碼

參考文件 rfc3629標準.對於任意乙個字,都可以用乙個唯一碼 unicode碼,由標準編制 表示,在應用過程中,需要對碼進行編碼.常用的編碼方式為utf 8.utf 8採用類似於ip位址分配的機制.即對於不同範圍的unicode碼,採用不同的模板進行編碼.流程概述為 2.1 查表獲取unicod...