濮阳杆衣贸易有限公司

主頁 > 知識庫 > 為何不要在MySQL中使用UTF-8編碼方式詳解

為何不要在MySQL中使用UTF-8編碼方式詳解

熱門標(biāo)簽:福建外呼電銷機(jī)器人加盟 電話機(jī)器人的價格多少錢一個月 400電話申請廠家現(xiàn)貨 昌德訊外呼系統(tǒng) 徐涇鎮(zhèn)騰訊地圖標(biāo)注 自己做地圖標(biāo)注需要些什么 天津公司外呼系統(tǒng)軟件 百度地圖標(biāo)注要什么軟件 中國地圖標(biāo)注公司

MySQL的UTF-8編碼方式

MySQL 從 4.1 版本開始支持 UTF-8,也就是 2003 年,然而目前流行的UTF-8 標(biāo)準(zhǔn)(RFC 3629)是在此之后規(guī)定的。正因此,才造就了MySQL中的UTF-8與我們?nèi)粘i_發(fā)中的UTF-8不一致,從到導(dǎo)致了些問題。MySQL的UTF-8只支持每個字符最多三個字節(jié),而真正的 UTF-8 是每個字符最多四個字節(jié)。

問題復(fù)現(xiàn)

有數(shù)據(jù)庫表如下:utf8編碼方式

往數(shù)據(jù)庫存一條記錄:

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

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

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

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

與預(yù)期一致,報錯了。

解決問題

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

總結(jié)

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

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • mysql數(shù)據(jù)庫設(shè)置utf-8編碼的方法步驟
  • MySQL GBK→UTF-8編碼轉(zhuǎn)換
  • 為什么在MySQL中不建議使用UTF-8

標(biāo)簽:北京 梅河口 昌都 陜西 荊門 鄂爾多斯 駐馬店 黔西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《為何不要在MySQL中使用UTF-8編碼方式詳解》,本文關(guān)鍵詞  為,何不,要在,MySQL,中,使用,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《為何不要在MySQL中使用UTF-8編碼方式詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于為何不要在MySQL中使用UTF-8編碼方式詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    布尔津县| 改则县| 灌南县| 盐津县| 永川市| 邯郸市| 青铜峡市| 张家界市| 上林县| 抚州市| 东港市| 墨竹工卡县| 龙陵县| 兴宁市| 阿城市| 汕头市| 南宫市| 禹州市| 清新县| 江安县| 临猗县| 绍兴市| 苏尼特左旗| 商河县| 晋江市| 淮安市| 句容市| 大连市| 突泉县| 盐池县| 布拖县| 洛隆县| 淮阳县| 连云港市| 阿合奇县| 邓州市| 土默特左旗| 静宁县| 积石山| 万荣县| 乌恰县|