mysql 微信用戶暱稱emoji 完整保存

微信用戶暱稱如今豐富多樣,一些個性的名稱中常常包含有特殊字符,以及emoji表情。起先,我總覺得MySQL只能保存純文本數據。但其實mysql(5.7版本)已很是強大,完整保存微信用戶暱稱(emoji表情)已不在話下。java

起先,個人項目是沒法保存這些含有emoji表情的暱稱。爲了鮮明的對比先後我作出的調整,先來看看以前的情況。mysql

1.mysql表字段定義

`third_name` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '用戶第三方帳號暱稱',

 

 

字段類型爲utf8sql

2.mysql數據庫鏈接字符串

<!-- Connection Info -->
<property name="url" value="${url}?useUnicode=true&amp;characterEncoding=utf8&amp;" />

 

jdbc鏈接使用的編碼格式也爲utf8

3.微信暱稱

這裏寫圖片描述

這暱稱中有emoji表情的小眼睛在瞅着我。數據庫

4.保存出錯

Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x91\x80\xE5\xBC...' for column 'third_name' at row 1
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)

 

 

接下來,咱們看一下能夠保存後的調整。微信

①、mysql表字段定義爲utf8mb4

`third_name` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '用戶第三方帳號暱稱',

 

 

注意改爲了「utf8mb4」,再也不是utf8,主要是支持的字節數不一樣。微信開發

MySQL在5.5.3版本以後增長了這個utf8mb4的編碼,mb4就是most bytes 4的意思,專門用來兼容四字節的unicode。其實,utf8mb4是utf8的超集,理論上原來使用utf8,而後將字符集修改成utf8mb4,也會不會對已有的utf8編碼讀取產生任何問題。固然,爲了節省空間,通常狀況下使用utf8也就夠了。 
想要了解的更多,請參照淺談MySQL中utf8和utf8mb4的區別ui

②.mysql數據庫鏈接字符串去掉編碼方式,假如不行,那就把編碼改爲utf8mb4也能夠的

<!-- Connection Info -->
<property name="url" value="${url}" />

 

 

③.保存後效果

使用Navicat查看的效果以下:編碼

這裏寫圖片描述

網頁上效果以下,小眼睛能夠正常顯示:url

這裏寫圖片描述

相關文章
相關標籤/搜索