UTF8格式簡介

2021-10-11 09:27:34 字數 959 閱讀 8300

utf是unicode傳輸格式,有utf8, utf16, utf32等。這裡介紹utf8。

utf8分成單位元組、雙位元組、三位元組、四位元組模式。具體如下:

0******x 7bit 相容ascii碼

110***xx 10****** 11bit

1110***x 10****** 10****** 16bit 漢字所在

11110*** 10****** 10****** 10****** 21bit

unicode最多有21位,0-10ffff。

utf8的首位元組還有8個碼位沒有占用,即11111***,設想中有utf8++編碼,用於文字資料和二進位制資料的混合表示:

這8個碼位分成兩組,分別表示1 2 4 8位元組資料,或1 2 4 8位元組長度加資料。如256-8=248,有248 [100],表示乙個位元組的二進位制資料。或者是256-4=252,252 10 [xx xx xx xx xx xx xx xx xx xx],表示連續的10位元組二進位制資料。

248 ? 1byte data

249 ? ? 2byte data

250 ? ? ? ? 4byte data

251 ? ? ? ? ? ? ? ? 8byte data

252 1byte len, 0-255byte data

253 2byte len, 0-65535byte data

254 4byte len, 0-4gb-1 data

255 8byte len, data

另外一套方案,8個碼位使用5個,分別是1 2 4 8位元組長度+資料,和標籤模式。

1位元組標籤長度+標籤開始+資料+標籤結束

[magic byte][4][abcd][data][abcd]

標籤要選擇資料裡邊沒有的。標籤最長255位元組,特別地,當標籤長度=0時,表示1位元組0結尾,即字串。

[magic byte][0][data][0]

流式校驗UTF8格式

由於某個工程需要校驗資料是否是utf8格式的,然後翻了翻rfc,確實挺簡單的編碼格式,所以直接寫了,但是越寫越感覺不對,位元組不夠時真的需要cache嗎?想肯定還有非常簡單的方法,果不其然,找到了這篇 流式校驗 utf8 原始碼 static unsigned char types static u...

VS中無簽名UTF8和帶簽名UTF8格式

在vs中,使用高階儲存選項功能的時候,我們將會發現utf8有兩種格式,乙個是帶簽名的utf8,乙個是無簽名的utf8。那麼這兩種的格式有什麼區別呢?帶簽名的utf8 帶簽名的utf8,是在生成的檔案中,在檔案的開頭使用utf8標誌,這樣在下次使用編輯器編輯的時候,編輯器能準確的識別當前檔案的編碼格式...

utf 8格式字串輸入限制

在對輸入字元進行正則校驗的時候,一般是進行輸入字元的型別匹配和長度匹配。型別匹配是通用的,但是長度匹配則有區別,主要是看傳輸的資料是以什麼格式進行傳輸的。在utf 8中,英文是乙個位元組,普通中文是三個位元組,也有四個位元組的。不同的文字有不同的儲存位數,一共是1 6個位元組。在utf 16中,英文...