mysql部分字符存儲(chǔ)報(bào)錯(cuò) Incorrect string value問題解決
原因分析
正常情況 utf-8 是一種可變長(zhǎng)度的字符集,它的單個(gè)字符的長(zhǎng)度范圍可以在1~4字節(jié)之間變化。由于其支持字符范圍廣并且傳輸效率高而被廣泛使用。雖然在 Windows 中我們默認(rèn)用的還是 gbk字符集 ,但是在使用瀏覽器瀏覽網(wǎng)站的時(shí)候大部分網(wǎng)站其實(shí)已經(jīng)在廣泛使用 utf-8字符集了。
而在 MySQL 當(dāng)中由于一些歷史原因,其直接支持的 utf-8 格式并非完全版的 utf-8。簡(jiǎn)單來(lái)說(shuō)MySQL中的utf-8字符集并不完全支持utf-8具體表現(xiàn)就是只能保存最長(zhǎng)字節(jié)為三字節(jié)的字符,而對(duì)于四字節(jié)編碼的字符時(shí),就會(huì)無(wú)法保存,并且拋出 Incorrect string value異常來(lái)聲明"你輸入了我無(wú)法識(shí)別的字符"。
為了解決無(wú)法保存四字節(jié)編碼的utf-8字符的問題,MySQL在5.3.3版本時(shí)推出了 utf8mb4字符集。因此我們?cè)谑褂脮r(shí)如果存在目標(biāo)字段值中有emoji或者生僻字的情況時(shí),最好使用 utf8mb4 字符集建表。
復(fù)現(xiàn)
CREATE TABLE tb_description( id int(11) AUTO_INCREMENT COMMENT '主鍵', description varchar(1024) COMMENT '評(píng)論', create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間', PRIMARY KEY(id) )engine=InnoDB,charset=utf8;
INSERT INTO tb_description(description) VALUES("學(xué)到了??");
解決辦法
CREATE TABLE tb_description( id int(11) AUTO_INCREMENT COMMENT '主鍵', description varchar(1024) COMMENT '評(píng)論', create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間', PRIMARY KEY(id) ) engine=InnoDB,DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
在客戶端插入前,設(shè)置編碼,插入成功
SET NAMES utf8mb4;
INSERT INTO tb_description(description) VALUES("學(xué)到了??");?
jdbc連接設(shè)置
jdbc.url=jdbc:mysql://xxx:3306/xx?useUnicode=true&characterEncoding=utf8mb4
如果Jfinal
jdbcUrl=jdbc:mysql://127.0.0.1:3306/blog
DruidPlugin 初始化后指定編碼
DruidPlugin druidPlugin = getDruidPlugin(); //指定編碼為utf8mb4 druidPlugin.setConnectionInitSql("set names utf8mb4"); me.add(druidPlugin);
來(lái)源
mysql遇到1366: Incorrect string value的正確解決方法_yes1983的博客-CSDN博客
MySQL插入數(shù)據(jù) “Incorrect string value“ 錯(cuò)誤解析_ghimi的博客-CSDN博客
到此這篇關(guān)于mysql部分字符存儲(chǔ)報(bào)錯(cuò) Incorrect string value問題解決的文章就介紹到這了,更多相關(guān)mysql 字符存儲(chǔ)報(bào)錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于sql?count(列名)、count(常量)、count(*)之間的區(qū)別
這篇文章主要介紹了關(guān)于sql?count(列名)、count(常量)、count(*)之間的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08MySql利用父id遞歸向下查詢子節(jié)點(diǎn)的方法實(shí)例
項(xiàng)目中遇到一個(gè)需求,要求查處菜單節(jié)點(diǎn)的所有節(jié)點(diǎn),在網(wǎng)上查了一下,大多數(shù)的方法用到了存儲(chǔ)過(guò)程,由于線上環(huán)境不能隨便添加存儲(chǔ)過(guò)程,所以自己寫一個(gè),這篇文章主要給大家介紹了關(guān)于MySql利用父id遞歸向下查詢子節(jié)點(diǎn)的相關(guān)資料,需要的朋友可以參考下2022-03-03MySQL安裝出現(xiàn)The?configuration?for?MySQL?Server?8.0.28?has
這篇文章主要給大家介紹了MySQL安裝出現(xiàn)The?configuration?for?MySQL?Server?8.0.28?has?failed.?You?can...錯(cuò)誤的解決辦法,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09MYSQL如何 查詢數(shù)據(jù)庫(kù)中所有表中的數(shù)據(jù)量
INFORMATION_SCHEMA.TABLES 是 MySQL 中的系統(tǒng)表,用于存儲(chǔ)關(guān)于數(shù)據(jù)庫(kù)中的表的信息,這篇文章主要介紹了MYSQL如何 查詢數(shù)據(jù)庫(kù)中所有表中的數(shù)據(jù)量,需要的朋友可以參考下2024-01-01詳解MySQL中事務(wù)的持久性實(shí)現(xiàn)原理
這篇文章主要介紹了詳解MySQL中事務(wù)的持久性實(shí)現(xiàn)原理,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下2021-01-01開源MySQL高效數(shù)據(jù)倉(cāng)庫(kù)解決方案:Infobright詳細(xì)介紹
這篇文章主要介紹了開源MySQL高效數(shù)據(jù)倉(cāng)庫(kù)解決方案:Infobright詳細(xì)介紹,本文講解了Infobright特征、Infobright的價(jià)值、Infobright的適用場(chǎng)景、與MySQL對(duì)比等內(nèi)容,需要的朋友可以參考下2015-03-03Window下如何恢復(fù)被刪除的Mysql8.0.17 Root賬戶及密碼
這篇文章主要介紹了Window下如何恢復(fù)被刪除的Mysql8.0.17 Root賬戶及密碼,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02MySQL使用觸發(fā)器如何實(shí)現(xiàn)CHECK檢查約束的功能
這篇文章主要介紹了MySQL使用觸發(fā)器如何實(shí)現(xiàn)CHECK檢查約束的功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01mysql中drop、truncate與delete的區(qū)別詳析
對(duì)于drop、truncate和delete雖然簡(jiǎn)單,但是真要使用或者面試時(shí)候問到還是需要有一定的總結(jié),下面這篇文章主要給大家介紹了關(guān)于mysql中drop、truncate與delete區(qū)別的相關(guān)資料,需要的朋友可以參考下2022-03-03