問(wèn)題背景:非常見(jiàn)中文漢字存入mysql庫(kù)
報(bào)錯(cuò)信息:Cause: java.sql.SQLException: Incorrect string value: "xF0xA8xB3x92x0Ap..." for column "request" at row 1
pom信息如下:
com.alibaba druid 1.1.12 mysql mysql-connector-java 5.1.37
問(wèn)題很明顯,因?yàn)閙ysql庫(kù)一般都是utf-8的字符集,只支持3字節(jié)的中文漢字,而特殊的中文漢字是用四字節(jié)存儲(chǔ)的,所以首先要把你的數(shù)據(jù)庫(kù)表的格式設(shè)置正確,修改語(yǔ)句如下:
ALTER TABLE 你的表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE 你的表名 CHANGE 字段名 VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
修改完成后,我們就可以處理代碼層面的問(wèn)題了,
=============畫重點(diǎn),敲黑板!?。?=============我們需要在初始化druid數(shù)據(jù)源時(shí),添加下面的配置,以保證連接mysql時(shí),客戶端的字符集被指定為utf8mb4
public DataSource getDataSource() throws Exception { Properties props = new Properties(); props.put("driverClassName", "com.mysql.jdbc.Driver"); props.put("url", "你的jdbc連接串"); props.put("username", "你的用戶名"); props.put("password", "你的密碼"); props.put("initConnectionSqls", "set names utf8mb4;"); return DruidDataSourceFactory.createDataSource(props); }
initConnectionSqls這個(gè)配置項(xiàng)一定要寫對(duì),網(wǎng)上很多的教程寫的都是connectionInitSqls,在比較新的druid版本是不認(rèn)這個(gè)參數(shù)的,具體原因可以參加下方源碼的截圖。
參考文獻(xiàn):
他山之石1
他山之石2
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72035.html
摘要:中無(wú)法存儲(chǔ)字符,源自于之前編碼只支持最大個(gè)字節(jié),而需要個(gè)字節(jié)。事實(shí)上,如果只是某個(gè)列存在字符的存儲(chǔ)問(wèn)題,那就只需要修改這個(gè)列的編碼類型即可。這涉及到應(yīng)用與建立連接的問(wèn)題。有一條命令是,會(huì)將的編碼統(tǒng)一設(shè)置。使用這條命令便可以達(dá)到我們的目的。 MySQL中無(wú)法存儲(chǔ)Emoji字符,源自于MySQL 5.5之前utf8編碼只支持最大3個(gè)字節(jié),而Emoji需要4個(gè)字節(jié)。從MySQL 5.5開(kāi)始,...
摘要:常見(jiàn)問(wèn)題解決編譯錯(cuò)誤問(wèn)題日志編譯錯(cuò)誤編譯提示等日志錯(cuò)誤解決檢查是否安裝插件安裝安裝運(yùn)行錯(cuò)誤問(wèn)題錯(cuò)誤不能連接解決檢查服務(wù)是否啟動(dòng)檢查地址和端口號(hào)未知數(shù)據(jù)庫(kù)解決檢查是否新建數(shù)據(jù)庫(kù)默認(rèn)的數(shù)據(jù)庫(kù)為,可在不同環(huán)境的配置文件中更改例如中 spring-boot-plus 常見(jiàn)問(wèn)題解決 FAQ 編譯錯(cuò)誤問(wèn)題 log日志編譯錯(cuò)誤 編譯提示log.info等日志錯(cuò)誤 解決 檢查是否安裝lombok插件...
閱讀 782·2021-09-26 09:55
閱讀 2071·2021-09-22 15:44
閱讀 1480·2019-08-30 15:54
閱讀 1336·2019-08-30 15:54
閱讀 2681·2019-08-29 16:57
閱讀 526·2019-08-29 16:26
閱讀 2496·2019-08-29 15:38
閱讀 2132·2019-08-26 11:48