mysql 保存emoji 4字節寬度字符串

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

http://www.javashuo.com/article/p-fhfqfxxz-z.html

http://cenalulu.github.io/linux/character-encoding/

相關文章
相關標籤/搜索