下面一起來了解下MySQL中不能使用UTF-8編碼方式的原因,相信大家看完肯定會受益匪淺,文字在精不在多,希望MySQL中不能使用UTF-8編碼方式的原因這篇短內(nèi)容是你想要的。
創(chuàng)新互聯(lián)公司是少有的網(wǎng)站建設(shè)、成都做網(wǎng)站、營銷型企業(yè)網(wǎng)站、微信平臺小程序開發(fā)、手機APP,開發(fā)、制作、設(shè)計、賣友情鏈接、推廣優(yōu)化一站式服務(wù)網(wǎng)絡(luò)公司,公司2013年成立,堅持透明化,價格低,無套路經(jīng)營理念。讓網(wǎng)頁驚喜每一位訪客多年來深受用戶好評
MySQL 從 4.1 版本開始支持 UTF-8,也就是 2003 年,然而目前流行的UTF-8 標準(RFC 3629)是在此之后規(guī)定的。正因此,才造就了MySQL中的UTF-8與我們?nèi)粘i_發(fā)中的UTF-8不一致,從到導致了些問題。MySQL的UTF-8只支持每個字符最多三個字節(jié),而真正的 UTF-8 是每個字符最多四個字節(jié)。
有數(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é)編碼部分,所以程序運行預期是會報錯的。運行這段代碼:
與預期一致,報錯了。
雖然MySQL的UTF-8存在缺陷,但是MySQL(包括mariadb)官方卻沒有修復此bug,而是通過2010年重新發(fā)布的“utf8mb4”來支持真正的 UTF-8。因此想要解決此問題,只能夠?qū)ySQL數(shù)據(jù)庫設(shè)置為utf8mb4字符集才行。
這個問題,也是因為某次保存數(shù)據(jù)的時候保存了一個emoji表情才發(fā)現(xiàn)的。其實最早開始用MySQL的時候,就有發(fā)現(xiàn)一個utf8mb4了,但是自己卻沒有卻去了解UTF8和UTF8MB4的區(qū)別。通過此次教訓,以后使用MySQL就老老實實的設(shè)置字符集為utf8mb4吧。
看完MySQL中不能使用UTF-8編碼方式的原因這篇文章后,很多讀者朋友肯定會想要了解更多的相關(guān)內(nèi)容,如需獲取更多的行業(yè)信息,可以關(guān)注我們的行業(yè)資訊欄目。
網(wǎng)站名稱:MySQL中不能使用UTF-8編碼方式的原因
文章地址:http://www.rwnh.cn/article30/jgjpso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、外貿(mào)建站、品牌網(wǎng)站制作、網(wǎng)站排名、App設(shè)計、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)