Unicode編碼是什么?
Unicode是一種字符編碼標(biāo)準(zhǔn),在不同領(lǐng)域的IT中都很常用。 Unicode是國際標(biāo)準(zhǔn),于1987年創(chuàng)建,是ASCII和其他字符集的替代方法。 截至2020年3月,Unicode字符集版本為13.0,其中包含來自不同語言和字母的143,859個(gè)字符。 當(dāng)前,Unicode字符集包含154種帶有設(shè)置和表情符號(hào)的現(xiàn)代字母。
Unicode編碼規(guī)范制定標(biāo)準(zhǔn):
把世界上所有能出現(xiàn)的字符,都為其分配一個(gè)數(shù)字來表示,比如,數(shù)字U+7F57被分配給了漢字中的”羅”字。Unicode編碼的標(biāo)準(zhǔn)里字符數(shù)量一直實(shí)在新增(包括一些稀有字符,當(dāng)然emoji表情字符也屬于unicode編碼哈哈),19年3月剛發(fā)布了Unicode12.0版本,比之前的版本新增了一些字符,現(xiàn)在在標(biāo)準(zhǔn)中的字符一共有137929個(gè),而Unicode編碼目前規(guī)劃了U+0000至U+10FFFF為unicode編碼(以世界上字符的數(shù)量應(yīng)該是很久不會(huì)考慮擴(kuò)展的),算一下目前還剩下976183(1114112-137929)個(gè)代碼點(diǎn),這976183個(gè)代碼點(diǎn)是規(guī)劃在unicode中的數(shù)字,但是還沒被分配對(duì)應(yīng)的字符。
UTF-8編碼:
UTF-8可以說是當(dāng)前互聯(lián)網(wǎng)最常用的編碼格式了,它基于Unicode字符集進(jìn)行編碼設(shè)計(jì)。它最大的特點(diǎn)是變長字節(jié)的編碼設(shè)計(jì),一個(gè)字符最長4個(gè)字節(jié),最少1個(gè)字節(jié),大部分的中文字符占3個(gè)字節(jié)。
編碼規(guī)則如下:
1.用一個(gè)字節(jié)表示的字符,第一位設(shè)為 0,后面的 7 位對(duì)應(yīng)這個(gè)字符的 Unicode 碼點(diǎn)。由于這128個(gè)字符的unicode完全對(duì)照ASCII碼,可以說完全向下兼容ASCII碼。即ASCII編碼的文件可以用UTF-8打開而不亂碼;
2.用一個(gè)字節(jié)以上表示的字符,假設(shè)是N個(gè)字節(jié)表示這個(gè)字符:則該字符第一個(gè)字節(jié)的前N位都為1,第N+1位為0,剩下的N-1個(gè)字節(jié)的前兩位都設(shè)為10,剩下沒有主動(dòng)設(shè)值的位置則使用這個(gè)字符的Unicode二進(jìn)制代碼點(diǎn)從低位到高位填充,不夠用0補(bǔ)足。