utf8 爲3-Byte 寬度 utf8mb4 爲4-Byte寬度,mb4就是most bytes 4的意思,專門用來兼容四字節的unicode. utf8mb4 爲 utf8 的擴展集.意味着包含了utf8的全部字符。
##utf8mb4 mysql 版本html
MySQL 5.5.3 以上版本都支持utf8mb4.若是mysql不是這個版本能夠升級至此版本。若是不能升級直接看文尾給出的建議。
##修改mysql配置文件my.cnfjava
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4'
###配置完成重啓mysql服務: service mysqld restart ###登陸mysql查看屬性: [root@ ~]# mysql -uroot -pmysql
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | | collation_connection | utf8mb4_unicode_ci | | collation_database | utf8mb4_unicode_ci | | collation_server | utf8mb4_unicode_ci | +--------------------------+----------------------------+
顯示以上內容爲設置成功linux
###修改數據庫,表,字段爲utf8mb4 ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;git
ALTER TABLE `tableName` DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci ALTER TABLE `tableName` MODIFY COLUMN `tableColumn` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '';
到這裏,mysql的設置已經完成了,下面咱們來看下 java的數據庫連接。github
##java連接mysqlsql
mysql 說是5.1.13版本以上就能支持 utf8mb4,但是個人5.1.2X 的版本就沒能跑通程序。我就直接升級到了最新版,其餘同窗能夠試試如下這個包:數據庫
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.13</version> </dependency>
新版:segmentfault
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency>
JDBC連接:編碼
jdbc:mysql://119.29.12.59:3306/btf_java?useUnicode=true&characterEncoding=utf8
這裏能夠直接設置characterEncoding爲utf8就ok。
而後就能夠跑起來程序試試了,這裏給大家兩個複製的圖 😂 😃 😄
##對於不想升級mysql的 這裏其實仍是勸你們升級吧。新特性都挺不錯。 對於不想升級的咱們能夠考慮經過編碼的方式來存儲。這裏給出一篇文章:emoji處理方式大起底
##參考資料: https://dev.mysql.com/doc/relnotes/connector-j/5.1/en/news-5-1-13.html
https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-charsets.html