UTF8、UTF16、UTF32区别
UTF8、UTF16、UTF32都是unicode字符集的字符編碼。
UTF意思是unicode轉(zhuǎn)換格式(Unicode transform format),出現(xiàn)UTF8、UTF16、UTF32是出于要在內(nèi)存中存儲字符的目的而對unicode字符編號進(jìn)行編碼。
UTF8、UTF16、UTF32區(qū)別:(8、16、32可看做每種字符編碼存儲所需的最少的比特位數(shù))
UTF8:存在單字節(jié)編碼,兼容ASCII;當(dāng)編碼為一個字節(jié),則設(shè)最高比特位為0;當(dāng)編碼超過一個字節(jié),則需要幾個字節(jié),就在第一個字節(jié)從最高位開始令連續(xù)的幾個比特位為1,之后的字節(jié)最高位為10。
UTF32:用固定長度的字節(jié)存儲字符編碼,不管Unicode字符編號需要幾個字節(jié),全部都用4個字節(jié)存儲,直接存儲Unicode編號。無需經(jīng)過字符編號向字符編碼的轉(zhuǎn)換步驟,提高效率,用空間換時間。
UTF16:使用2或4個字節(jié)進(jìn)行存儲。對于Unicode編號范圍在0~FFFF之間的字符,統(tǒng)一用兩個字節(jié)存儲,無需字符轉(zhuǎn)換,直接存儲Unicode編號。對于Unicode字符編號在10000-10FFFF之間的字符,UTF16用四個字節(jié)存儲,簡單說就是:將Unicode字符編號(3字節(jié))分為兩部分,高位部分(Unicode字符編號中占1.5個字節(jié))用一個值介于 D800-DBFF (110110yy yyyyyyyy,y為0/1)之間的雙字節(jié)存儲,低位部分用一個值介于 DC00-DFFF (110111xx xxxxxxxx,x為0/1)的雙字節(jié)存儲。而介于D800-DFFF之間的編碼在Unicode中是預(yù)留的,不安排字符,如果Unicode中有字符的編號是這之間的值,會引發(fā)沖突和歧義,很有可能一個不常見字符(存儲為四個字節(jié))最后被讀成兩個常見字符(存儲為兩個字節(jié))。
參考:https://blog.csdn.net/pipi1375/article/details/84784392
總結(jié)
以上是生活随笔為你收集整理的UTF8、UTF16、UTF32区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python+scrapy爬取斗鱼图片
- 下一篇: 浏览美国大学最新排名以便确立目标 备战雅