91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中不能使用UTF-8編碼方式的原因

發布時間:2020-06-01 15:51:57 來源:PHP中文網 閱讀:455 作者:三月 欄目:MySQL數據庫

下面一起來了解下MySQL中不能使用UTF-8編碼方式的原因,相信大家看完肯定會受益匪淺,文字在精不在多,希望MySQL中不能使用UTF-8編碼方式的原因這篇短內容是你想要的。                                                          MySQL中不能使用UTF-8編碼方式的原因

MySQL的UTF-8編碼方式

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

問題復現

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

MySQL中不能使用UTF-8編碼方式的原因

往數據庫存一條記錄:

@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中不能使用UTF-8編碼方式的原因

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

MySQL中不能使用UTF-8編碼方式的原因

與預期一致,報錯了。

解決問題

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

總結

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

看完MySQL中不能使用UTF-8編碼方式的原因這篇文章后,很多讀者朋友肯定會想要了解更多的相關內容,如需獲取更多的行業信息,可以關注我們的行業資訊欄目。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兰西县| 赤峰市| 稻城县| 县级市| 集贤县| 阜南县| 浙江省| 荃湾区| 双柏县| 常州市| 阿合奇县| 桑植县| 巴彦淖尔市| 花莲市| 神农架林区| 肥城市| 大新县| 清河县| 克东县| 汝州市| 瓮安县| 海淀区| 闻喜县| 大田县| 宁国市| 沂南县| 浙江省| 阳泉市| 武川县| 改则县| 县级市| 周口市| 浦江县| 肥乡县| 晴隆县| 达州市| 田阳县| 鄂伦春自治旗| 昌图县| 丰原市| 南丹县|