亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長(zhǎng)資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    utf8和utf8mb4的區(qū)別詳解

    utf8和utf8mb4的區(qū)別詳解

    utf8和utf8mb4的區(qū)別

    一、簡(jiǎn)介

    MySQL在5.5.3之后增加了這個(gè)utf8mb4的編碼,mb4就是most bytes 4的意思,專門用來兼容四字節(jié)的unicode。utf8mb4是utf8的超集,除了將編碼改為utf8mb4外不需要做其他轉(zhuǎn)換。當(dāng)然,為了節(jié)省空間,一般情況下使用utf8也就夠了。

    二、內(nèi)容描述

    那上面說了既然utf8能夠存下大部分中文漢字,那為什么還要使用utf8mb4呢? 原來mysql支持的 utf8 編碼最大字符長(zhǎng)度為 3 字節(jié),如果遇到 4 字節(jié)的寬字符就會(huì)插入異常了。三個(gè)字節(jié)的 UTF-8 最大能編碼的 Unicode 字符是 0xffff,也就是 Unicode 中的基本多文種平面(BMP)。也就是說,任何不在基本多文本平面的 Unicode字符,都無法使用 Mysql 的 utf8 字符集存儲(chǔ)。包括 Emoji 表情(Emoji 是一種特殊的 Unicode 編碼,常見于 ios 和 android 手機(jī)上),和很多不常用的漢字,以及任何新增的 Unicode 字符等等(utf8的缺點(diǎn))。

    通常,計(jì)算機(jī)在存儲(chǔ)字符時(shí),會(huì)根據(jù)不同類型的字符以及編碼方式分配存儲(chǔ)空間。例如以下幾種編碼方式;

    ①ASCII編碼中,一個(gè)英文字母(不分大小寫)占用一個(gè)字節(jié)的空間,一個(gè)中文漢字占用兩個(gè)字節(jié)的空間。一個(gè)二進(jìn)制的數(shù)字序列,在計(jì)算機(jī)中作為一個(gè)數(shù)字單元存儲(chǔ)時(shí),一般為8位二進(jìn)制數(shù),換算為十進(jìn)制。最小值0,最大值255。

    ②UTF-8編碼中,一個(gè)英文字符占用一個(gè)字節(jié)的存儲(chǔ)空間,一個(gè)中文(含繁體)占用三個(gè)字節(jié)的存儲(chǔ)空間。

    ③Unicode編碼中,一個(gè)英文占用兩個(gè)字節(jié)的存儲(chǔ)空間,一個(gè)中文(含繁體)占用兩個(gè)字節(jié)的存儲(chǔ)空間。

    ④UTF-16編碼中,一個(gè)英文字母字符或一個(gè)漢字字符存儲(chǔ)都需要占用2個(gè)字節(jié)的存儲(chǔ)空間(Unicode擴(kuò)展區(qū)的一些漢字存儲(chǔ)需要4個(gè)字節(jié))。

    ⑤UTF-32編碼中,世界上任何字符的存儲(chǔ)都需要占用4個(gè)字節(jié)的存儲(chǔ)空間。

    既然utf8能兼容絕大部分的字符,為什么要擴(kuò)展utf8mb4?

    隨著互聯(lián)網(wǎng)的發(fā)展,產(chǎn)生了許多新類型的字符,例如emoji這種類型的符號(hào),也就是我們通常在聊天時(shí)發(fā)的小黃臉表情,這種字符的出現(xiàn)不在基本多平面的Unicode字符之中,導(dǎo)致無法在MySQL中使用utf8存儲(chǔ),MySQL于是對(duì)utf8字符進(jìn)行了擴(kuò)展,增加了utf8mb4這個(gè)編碼。

    所以,設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)如果想要允許用戶使用特殊符號(hào),最好使用utf8mb4編碼來存儲(chǔ),使得數(shù)據(jù)庫(kù)有更好的兼容性,但是這樣設(shè)計(jì)會(huì)導(dǎo)致耗費(fèi)

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)