MySQL JDBC 支持emoji

emoji編碼需要4位unicode,utf8需要升級(jí)到utf8mb4才能支持,jdbc默認(rèn)讀取沒有問題,但是插入數(shù)據(jù)的時(shí)候總是出錯(cuò):

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1  
1. 確認(rèn)MySQL版本;

MySQL版本需要5.5.3+,之前的版本不支持utf8mb4。

2. 修改表內(nèi)對(duì)應(yīng)字段;

表內(nèi)字段需要同事修改成utf8mb4。

3. 修改mysql配置文件my.cnf(windows為my.ini)

問題卡在這里了:Mac OS X上安裝了5.7.11沒有發(fā)現(xiàn)my.cnf。
解決方法是直接找到一份,也可以直接創(chuàng)建一個(gè)空文件,或者復(fù)制默認(rèn)模板,模板位置:

/usr/local/mysql/support-files/my-default.cnf

文件保存到這里:(注意:etc下需要root權(quán)限)

/etc/my.cnf

文件最精簡內(nèi)容如下:

[client]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4

至此修改完成。

PS:

1、MySQLWorkbench很有問題。連接數(shù)據(jù)庫后,打開Server菜單下Options File 后依然顯示不能讀取my.cnf。但是執(zhí)行命令:

SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

能看到其實(shí)已經(jīng)修改完成了,測(cè)試后已經(jīng)能成功插入emoji。

2、通過執(zhí)行命令修改后,雖然顯示修改成功,但是每次斷開數(shù)據(jù)庫連接后再次進(jìn)入發(fā)現(xiàn)設(shè)置內(nèi)容又變回來。

SET character_set_client = utf8mb4;

3、MySQL官網(wǎng)給出多個(gè)my.cnf的位置,目前沒有測(cè)試其他位置。

4、jdbc修改前默認(rèn)使用的是latin1,修改后變成utf8mb4,所以u(píng)rl不再需要添加useUnicode和characterEncoding。

參考來源:

· Mac OS X下,MySQL在/etc/下沒有my.cnf(MySQL修改編碼時(shí)發(fā)現(xiàn)的問題)
· mysql/Java服務(wù)端對(duì)emoji的支持

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容