1,概述
MySQL安装成功后(安装过程参见:http://blog.csdn.net/paulorwys/article/details/72628307),
常见的就是字符集的设置。
通常,为了规避中文存储/读取的乱码问题以及与其他系统(Android/iOS)统一编码/解码的问题,我们会强制指定数据库连接(url)的字符集为utf-8,形如:
配置文件(*.properties)中:
jdbc:mysql://<ip/host>:3306/<db_name>?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false
XML文件中:
jdbc:mysql://<ip/host>:3306/<db_name>?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false
既然提到了utf-8,细心的读者可能会联想到安装过程中的另外一个名字:utf-8mb4。
该字符集从MySQL 5.5版本开始提供,用于存放emoji字符,我们在微信公众号开发以及其他im通信中会遇到。
而对该字符集的支持,不能在jdbc连接字符串中强制指定utf-8mb4了,因为jdbc不予支持。
那就需要在服务端设置方面动脑筋了。
2,配置过程
2.1 目标环境
Windows 7 64位、Windows 10 64位
2.2 配置文件
参考文献:https://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
需要将安装目录下的my-default.ini改名或复制一份成my.ini文件,并进行相关的配置。
2.3 配置项
(1)【mysqld】段的配置项:
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'set names utf8mb4'
参考文献:https://dev.mysql.com/doc/refman/5.7/en/server-options.html
(2)【client】段的配置项(在文件尾部追加)
default-character-set = utf8mb4
参考文献:https://dev.mysql.com/doc/refman/5.7/en/charset-configuration.html
(3)【mysql】段的配置项(在文件尾部追加)
default-character-set = utf8mb4
参考文献:https://dev.mysql.com/doc/refman/5.6/en/charset-connection.html
2.4 启动配置项
在修改配置文件之前,关闭mysql服务;
保存完毕配置文件后,启动mysql服务即可。
2.5 验证配置项
使用mysql工具登录,通过show variables where Variable_name like 'char%'命令来验证设置结果。
3,补充
注意:
(1)服务端设置与jdbc连接的设置是补充关系,不是替换关系。
(2)服务端设置适用于5.5及以上版本。