天天看點

MySQL 解決 emoji表情 的方法,使用utf8mb4 字元集(4位元組 UTF-8 Unicode 編碼)

如果要實作存儲 emoji 表情到 MySQL 執行個體,需要應用用戶端、到 MySQL 執行個體的連接配接、MySQL 執行個體内部 3 個方面統一使用或者支援 utf8mb4 字元集。

用戶端需要保證輸出的字元串的字元集為 utf8mb4。

注:utf8mb4隻是MySQL中的概念,因為MySQL的UTF-8并不是真正意義上的UTF-8,我們的應用中隻要使用UTF-8就可以了。

以常見的 JDBC 連接配接為例:

對于 JDBC 連接配接,需要使用 MySQL Connector/J 5.1.13(含)以上的版本。

JDBC 的連接配接串中,不配置 characterEncoding 選項。連接配接器會自動比對識别字元集。

比如

這裡使用VI來修改,輸入指令:vi /usr/my.cnf 回車;打開檔案後按“i”鍵進入編輯狀态;

在“[mysqld]”下面添加“character_set_server=utf8mb4”,按Esc鍵進入指令模式,輸入“:wq”回車(儲存并退出)。

macOS下的路徑可能是:/usr/local/mysql/my.cnf

注意:必須重新啟動 MySQL 執行個體;

可以使用工具來設定資料庫屬性:

MySQL 解決 emoji表情 的方法,使用utf8mb4 字元集(4位元組 UTF-8 Unicode 編碼)

對于 JDBC 連接配接串設定了 characterEncoding 為 utf8 或者做了上述配置仍舊無法正常插入 emoji 資料的情況,建議在代碼中指定連接配接的字元集為 utf8mb4,樣例代碼如下:

注: set names utf8mb4; 指令會将 character_set_client、character_set_connection、character_set_results 3個會話字元集相關變量均設定為 utf8mb4,以保證寫入或者讀出的資料使用 utf8mb4 字元集進行解釋。

相關閱讀

<a target="_blank" href="http://blog.csdn.net/testcs_dn/article/details/70156967">utf8mb4 字元集(4位元組 UTF-8 Unicode 編碼)</a>

<a target="_blank" href="http://blog.csdn.net/testcs_dn/article/details/31414677">CentOS下安裝MySQL,Windows下使用Navicat for MySql連接配接</a>

<a target="_blank" href="http://blog.csdn.net/testcs_dn/article/details/21122035">MySQL學習(二)圖形界面管理工具Navicat for MySQL安裝和使用</a>