您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關MySQL存儲表情時報java.sql.SQLException: Incorrect string value:‘\xF0\x9F\x92\xA9\x0D\x0A...’錯誤怎么辦,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
本項目是基于Spring MVC + MySQL + Druid DataSource。在往數據庫插入表情Emoji字符時報錯:
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\xA9\x0D\x0A...'
普通字符最多占用3個字節,使用utf8足夠。而emoji表情字符占用4個字節,需要使用utf8mb4字符集存儲。解決需要在兩個地方做修改:MySQL服務器端和連接的客戶端。
MySQL服務器端
之前給大家介紹過使MySQL能夠存儲emoji表情字符的設置教程,想進一步了解的朋友可以先看一看。
在服務器端把需要存儲表情emoji字符的字段改用utf8mb4字符集:
ALTER TABLE mytable MODIFY COLUMN myfiled varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
客戶端
客戶端需要把連接的字符集設定為utf8mb4。
設置如下:
set names utf8mb4;
使用的是阿里開源的druid datasource,它有一個屬性connectionInitSqls,它用來設置物理連接初始化的時候執行的sql。所以我們可以使用connectionInitSqls來初始化連接。
Spring配置如下:
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 基本屬性 url、user、password --> <property name="url" value="jdbc:mysql://localhost:3888/majing?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull" /> <property name="username" value="dbusername"/> <property name="password" value="dbpasswod"/> <property name="connectionInitSqls" value="set names utf8mb4;" /> <!-- 其他配置 --> </bean>
其他的數據庫連接池如dbcp2,HikariCP都有connectionInitSqls屬性。
關于“MySQL存儲表情時報java.sql.SQLException: Incorrect string value:‘\xF0\x9F\x92\xA9\x0D\x0A...’錯誤怎么辦”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。