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