91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MySQL中utf8和utf8mb4有什么區(qū)別

汽車(chē)玩家 ? 來(lái)源:IT生涯 ? 作者:IT生涯 ? 2020-04-12 19:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、簡(jiǎn)介

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

二、內(nèi)容描述

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

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

①ASCII編碼中,一個(gè)英文字母(不分大小寫(xiě))占用一個(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)生了許多新類(lèi)型的字符,例如emoji這種類(lèi)型的符號(hào),也就是我們通常在聊天時(shí)發(fā)的小黃臉表情,這種字符的出現(xiàn)不在基本多平面的Unicode字符之中,導(dǎo)致無(wú)法在MySQL中使用utf8存儲(chǔ),MySQL于是對(duì)utf8字符進(jìn)行了擴(kuò)展,增加了utf8mb4這個(gè)編碼。

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    906

    瀏覽量

    29537
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    256Mb x4、x8、x16 SDRAM特性解析與應(yīng)用指南

    256Mb x4、x8、x16 SDRAM特性解析與應(yīng)用指南 在電子設(shè)計(jì)領(lǐng)域,SDRAM作為關(guān)鍵的存儲(chǔ)器件,其性能和特性對(duì)系統(tǒng)的整體表現(xiàn)起著至關(guān)重要的作用。今天,我們就來(lái)深入探討一下256Mb
    的頭像 發(fā)表于 02-02 16:05 ?359次閱讀

    行星減速機(jī)與齒輪減速機(jī)什么區(qū)別

    行星減速機(jī)與齒輪減速機(jī)什么區(qū)別
    的頭像 發(fā)表于 01-04 16:30 ?1383次閱讀
    行星減速機(jī)與齒輪減速機(jī)<b class='flag-5'>有</b><b class='flag-5'>什么區(qū)別</b>?

    武漢芯源MCU和英飛凌MCU什么區(qū)別?

    武漢芯源MCU和英飛凌MCU什么區(qū)別
    發(fā)表于 12-11 06:26

    請(qǐng)問(wèn)jtag和jlink什么區(qū)別???

    jtag和jlink什么區(qū)別啊?
    發(fā)表于 11-28 06:46

    微波雷達(dá)和毫米波雷達(dá)什么區(qū)別

    。今天就和大家說(shuō)誰(shuí)微波雷達(dá)和毫米波雷達(dá)什么區(qū)別 微波雷達(dá)和毫米波雷達(dá)的區(qū)別 其實(shí)微波雷達(dá)和毫米波雷達(dá)主要的區(qū)別就在于頻段,兩者本質(zhì)上其實(shí)是一樣的,但是從名稱(chēng)
    的頭像 發(fā)表于 10-30 16:56 ?2038次閱讀
    微波雷達(dá)和毫米波雷達(dá)<b class='flag-5'>有</b><b class='flag-5'>什么區(qū)別</b>

    labview怎么讀取UTF-16 LE 文本數(shù)據(jù)

    各位大佬 請(qǐng)問(wèn)labview怎么讀取UTF-16 LE 文本數(shù)據(jù) 直接讀數(shù)據(jù)出來(lái)會(huì)有空格 但是空格無(wú)法刪除,請(qǐng)問(wèn)怎么獲取UTF-16 LE格式數(shù)據(jù)
    發(fā)表于 10-10 11:23

    rt-thread程序的漢字字符串,如何提取漢字的gb2312編碼?

    我希望程序的漢字字串“歡迎光臨”取出來(lái)的字節(jié)數(shù)組是GB2312碼:“BB B6 D3 AD B9 E2 C1 D9 00”, 而實(shí)際出來(lái)的是UTF-8碼:“E6 AC A2 E8 BF 8
    發(fā)表于 09-29 07:14

    求助各位大佬,關(guān)于如何讀寫(xiě)編碼格式為UTF-16LE的配置文件?

    如題,小白求助各位大佬,要怎么實(shí)現(xiàn)對(duì)編碼為UTF-16LE的配置文件的讀寫(xiě)。 使用讀配置文件的vi讀不出內(nèi)容。 使用讀文本的方式寫(xiě)入異常,文件的編碼變成UTF-8且內(nèi)容也不對(duì)。
    發(fā)表于 09-14 12:54

    終端GBK編碼顯示錯(cuò)誤的原因?怎么解決?

    RT-thread studio終端,使用UTF8編碼中文顯示正常,使用GBK編碼時(shí)終端顯示亂碼。(以使用其他串口助手等核驗(yàn)過(guò)串口數(shù)據(jù),例如GBK下輸出“中文”D6 D0 CE C4,在
    發(fā)表于 09-11 07:50

    如何使用 UTF-8 編碼?

    如何使用 UTF-8 編碼?
    發(fā)表于 09-04 06:21

    CentOS 7下MySQL 8雙主熱備高可用架構(gòu)全解

    Centos7部署MySQL8+keepalived雙主熱備(含Keepalived配置與GTID同步優(yōu)化方案) 架構(gòu)拓?fù)湓?GTID同步 VIP 192.168.1.100 MySQL主節(jié)點(diǎn)1
    的頭像 發(fā)表于 08-12 17:08 ?831次閱讀

    【創(chuàng)龍TL3562-MiniEVM開(kāi)發(fā)板試用體驗(yàn)】8、FreeType顯示矢量文字

    [utf_8_len] <<4)& 0xf0) ; word[len] = (unicode[0]<<8) | unicode[1
    發(fā)表于 08-05 11:54

    求助,關(guān)于STM32Cubemx 6.15版本生成工程的文件編碼的問(wèn)題求解

    之前升級(jí)6.13和6.14版本的時(shí)候重新生成工程會(huì)將文件編碼強(qiáng)制轉(zhuǎn)換成UTF-8格式,導(dǎo)致中文注釋亂碼。但是在安裝文件夾下面的STM32CubeMX.l4j.ini文件里面添加一行
    發(fā)表于 07-29 12:31

    4K和8K顯示器驅(qū)動(dòng)板的區(qū)別

    前面我們講到lhdh4k 4K屏USB3.0顯示方案以及驅(qū)動(dòng)板出現(xiàn)噪音應(yīng)該如何解決?,今天我們來(lái)聊一聊有關(guān)驅(qū)動(dòng)板的新內(nèi)容,4K顯示器驅(qū)動(dòng)板和8
    的頭像 發(fā)表于 06-06 11:18 ?1844次閱讀

    GD32與STM32什么區(qū)別

    電子發(fā)燒友網(wǎng)站提供《GD32與STM32什么區(qū)別.docx》資料免費(fèi)下載
    發(fā)表于 04-03 17:27 ?0次下載