首頁 > 數據庫 > mysql教程 > 正文

為什么不要在MySQL中使用UTF-8編碼方式

原創 2019-06-19 14:01:04 0 807
第七期線上培訓班

MySQL的UTF-8編碼方式

MySQL 從 4.1 版本開始支持 UTF-8,也就是 2003 年,然而目前流行的UTF-8 標準(RFC 3629)是在此之后規定的。正因此,才造就了MySQL中的UTF-8與我們日常開發中的UTF-8不一致,從到導致了些問題。MySQL的UTF-8只支持每個字符最多三個字節,而真正的 UTF-8 是每個字符最多四個字節。

問題復現

有數據庫表如下:utf8編碼方式

下載 (2).jpg

往數據庫存一條記錄:

@Test public void testInsert() {     User user = new User();     user.setUsername("\uD83D\uDE00 ");     user.setPassword("123456");     userRepo.save(user); }

這里只是部分代碼,看不懂沒關系,這里是給user表插入一條記錄。其中username是\uD83D\uDE00 。

其實\uD83D\uDE00是一個emoji表情。

因為MySQL中utf8字符集只支持三字節UTF-8編碼的Unicode范圍,而emoji字符屬于四字節編碼部分,所以程序運行預期是會報錯的。運行這段代碼:

與預期一致,報錯了。

解決問題

雖然MySQL的UTF-8存在缺陷,但是MySQL(包括mariadb)官方卻沒有修復此bug,而是通過2010年重新發布的“utf8mb4”來支持真正的 UTF-8。因此想要解決此問題,只能夠將MySQL數據庫設置為utf8mb4字符集才行。

總結

這個問題,也是因為某次保存數據的時候保存了一個emoji表情才發現的。其實最早開始用MySQL的時候,就有發現一個utf8mb4了,但是自己卻沒有卻去了解UTF8和UTF8MB4的區別。通過此次教訓,以后使用MySQL就老老實實的設置字符集為utf8mb4吧。

更多MySQL相關技術文章,請訪問MySQL教程欄目進行學習!

以上就是為什么不要在MySQL中使用UTF-8編碼方式的詳細內容,更多請關注php中文網其它相關文章!

php中文網最新課程二維碼
  • 相關標簽:mysql utf-8
  • 本文原創發布php中文網 ,轉載請注明出處,感謝您的尊重!
  • 相關文章


  • MySQL索引的原理
  • MySQL存儲引擎詳解
  • mysql存儲過程的寫法
  • 為什么不要在MySQL中使用UTF-8編碼方式
  • 網友評論

    文明上網理性發言,請遵守 新聞評論服務協議

    我要評論
    獨孤九賤(5)_ThinkPHP5視頻教程

    獨孤九賤(5)_ThinkPHP5視頻教程

    ThinkPHP是國內最流行的中文PHP開發框架,也是您Web項目的最佳選擇。《php.cn獨孤九賤(5)-ThinkPHP5視頻教程》課程以ThinkPHP5最新版本為例,從最基本的框架常識開始,將...

    獨孤九賤(4)_PHP視頻教程

    獨孤九賤(4)_PHP視頻教程

    江湖傳言:PHP是世界上最好的編程語言。真的是這樣嗎?這個梗究竟是從哪來的?學會本課程,你就會明白了。 PHP中文網出品的PHP入門系統教學視頻,完全從初學者的角度出發,絕不玩虛的,一切以實用、有用...

    獨孤九賤(1)_HTML5視頻教程

    獨孤九賤(1)_HTML5視頻教程

    《php.cn原創html5視頻教程》課程特色:php中文網原創幽默段子系列課程,以惡搞,段子為主題風格的php視頻教程!輕松的教學風格,簡短的教學模式,讓同學們在不知不覺中,學會了HTML知識。 ...

    ThinkPHP5實戰之[教學管理系統]

    ThinkPHP5實戰之[教學管理系統]

    本套教程,以一個真實的學校教學管理系統為案例,手把手教會您如何在一張白紙上,從零開始,一步一步的用ThinkPHP5框架快速開發出一個商業項目。

    PHP入門視頻教程之一周學會PHP

    PHP入門視頻教程之一周學會PHP

    所有計算機語言的學習都要從基礎開始,《PHP入門視頻教程之一周學會PHP》不僅是PHP的基礎部分更主要的是PHP語言的核心技術,是學習PHP必須掌握的內容,任何PHP項目的實現都離不開這部分的內容,通...

    作者信息

    步履不停

    分分合合拂袖悲歡,生生世世心甘情愿。

    最近文章
    如何自學美工 402
    如何壓縮jpg圖片 981
    如何查看網址的端口號 599

    相關視頻教程

  • MySql參考手冊 MySql參考手冊
  • MySQL數據庫技術小知識每日分享 MySQL數據庫技術小知識每日分享
  • MySQL高級進階視頻教程 MySQL高級進階視頻教程
  • 相關視頻章節

    第七期線上培訓班 118期四肖中特唯一