在mysql中用utf8應該使用utf8mb4格式而不是utf8

首先說一下在mysql使用UTF-8時,應選擇utf8mb4而不是utf8,具體原因請看下方

之前在項目中向utf8編碼的mysql存儲數據時總是提示錯誤,經過很長時間才知道原因,mysql的utf8並不是4字節的UTF-8而是3字節的,原因是MySQL 從 4.1 版本開始支持 UTF-8,也就是 2003 年,而今天使用的 UTF-8 標準(RFC 3629)是隨後纔出現的。

舊版的 UTF-8 標準(RFC 2279)最多支持每個字符 6 個字節。2002 年 3 月 28 日,MySQL 開發者在第一個 MySQL 4.1 預覽版中使用了 RFC 2279。

同年 9 月,他們對 MySQL 源代碼進行了一次調整:“UTF8 現在最多隻支持 3 個字節的序列”。

是誰提交了這些代碼?他爲什麼要這樣做?這個問題不得而知。在遷移到 Git 後(MySQL 最開始使用的是 BitKeeper),MySQL 代碼庫中的很多提交者的名字都丟失了。2003 年 9 月的郵件列表中也找不到可以解釋這一變更的線索。

在這個不合法的字符集發佈了之後,MySQL 就無法修復它,因爲這樣需要要求所有用戶重新構建他們的數據庫。最終,MySQL 在 2010 年重新發布了“utf8mb4”來支持真正的 UTF-8。

 

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