Mysql採坑只utf8

當然,現在建數據庫時,大家一般都會使用utf8mb4,那爲什麼不適用utf8呢,其實是一個坑。
mysql中的utf8只支持每個字符三個字節,而真正的UTF-8是每個字符最多四字節,這可以算數Mysql的一個bug。在mysql中,真正支持UTF-8的字符集是utf8mb4,佔用四個字節。
歷史數據是這樣的:
2003年,MySQL 從 4.1 版本開始支持 UTF-8,但是這是一箇舊版的標準(RFC 2279),新版的UTF-8標準(RFC 3629)是之後纔出現的。
RFC 2279最多支持每個字符 6 個字節。但是在2002年9月,MySQL源代碼進行了一次調整:“UTF8 現在最多隻支持 3 個字節的序列”。至於調整的原因,目前也已經無從考證了。
可以猜測一下,大概是當初的設計者想要佔用更少的空間,達到更快的查詢速度吧。6個字節有點多,3個字節足夠了。但是這也就造成了由於存儲空間不夠,不能兼容RFC 3629標準。
所以utf8可以說是mysql的獨創的一套字符集,並不符合字面給人的認知。人們發現了他的問題之後,期待MySQL進行修復。不過可能是因爲種種原因吧,mysql並沒有修復utf8的問題,而是在 2010 年重新發布了“utf8mb4”來支持真正的UTF-8。
所以呢,重要的事說三遍。
mysql中,utf8不是真正的支持UTF-8的字符集,utf8mb4纔是。
mysql中,utf8不是真正的支持UTF-8的字符集,utf8mb4纔是。
mysql中,utf8不是真正的支持UTF-8的字符集,utf8mb4纔是。

Mysql採坑只utf8
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章