Skip to main content

MySQL utf8與utf8mb4的差別

一次搞懂 MySQL utf8 與 utf8mb4 的差別,general 與 unicode 到底怎麼用??看完不再霧煞煞包準你能懂!

一般情況下,使用 MySQL 的 utf8 就夠用了,但隨著網路資訊的快速進步,需求越來越多元,有些特殊漢字或是常用的 emoji(一種特殊的 Unicode 編碼,在 ios 跟安卓手機都會看過),這其實都是需要使用四個位元組才能完整表現的,相對 MySQL 支援的 utf8 只有三個位元組,大部分的中文漢字雖然夠用,但是卻無法滿足到所有的字元,若是要使用特殊漢字或是表情符號,就無法使用 MySQL 的 utf8 字符集儲存,造成錯誤。

UTF-8 原本不就支援四個位元組嗎?為什在 MySQL 裡只能支援三個位元,還要多此一舉端出一個 utf8mb4?

有關幾個位元的文章說明

是的,你所知道的 UTF-8 字符集是支援最多四個位元組沒有錯,但因為 MysSQL 最初開發時,認為三個位元組就夠用了不需要支援到四個位元組,於是把 utf8 設定為最多支援三個位元組,並不是我們所熟知的 UTF-8 支援四位元組的字符集,可說是此 MySQL utf8 非彼 UTF-8 啊!!

這情況,導致在使用 MySQL utf8 編碼時使用到生僻字特殊漢字,或是表情符號時,會出錯誤插入失敗(因為只支援到三個位元組),以為是編碼錯誤,找了老半天竟然是系統不支援字符的窘境。

參考文章[1]

https://blog.csdn.net/liujinghu/article/details/125690836