Ubuntu下安装了MySQL数据库,默认latin1。
show variables like 'character%';
查看当前字符集编码情况,显示如下:
+--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
character_set_client:客户端发送的查询中所使用的字符集,下文简称client
character_set_connection:服务器接收到查询后,会将查询从character_set_client系统变量所标识的编码转换到character_set_connection,下文简称connection
character_set_results:服务器发送结果集或返回错误信息到客户端所使用的字符集,下文简称results
而这几个字符集设置的关系为:
信息输入路径:client→connection→server
信息输出路径:server→connection→results
解决中文乱码,将相关字符集设置为utf8,解决方案为:
mysql的启动配置文件my.cnf:
找到[client] 添加:
default-character-set=utf8
找到[mysqld] 添加:
default-character-set=utf8
init_connect='SET NAMES utf8'
然后重启mysql服务
重启会报错,原因是配置语法问题,做如下修改即可:
将:
character-set-server=utf8
改为:
character-set-server=utf8
查看编码为:
+--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
reference:
[1]. https://blog.csdn.net/xiaoguochang/article/details/39121207
[2]. https://blog.csdn.net/salonhuang/article/details/74000421