导入数据或者运行sql文件之前,先查看数据库编码
# 登录MySQL
mysql -u root -p
# 查看编码
show variables like '%char%' # 发现有的编码不是utf8
# 退出
quit
进入 /etc/my.cnf 修改配置文件(修改之前关掉MySQL服务)
# 在 [mysqld] 之上加上:
[client]
default-character-set=utf8
# 在 [mysqld] 下加上:
character-set-server=utf8
init_connect='SET NAMES utf8'
修改完保存后开启服务后导入数据或运行sql文件至数据库
备份命令(这里命令中不写用户名和密码是因为在配置文件中已经配置了)
备份脚本要注意开放可执行权限
mysqldump --default-character-set=utf8 databasename > 备份的路径/bk_sql_$(date +%Y%m%d-%H%M%S).sql
如果发现备份的内容还是乱码,可能是表结构中有blob类型; 这个参数的含义是用16进制的方式导出BINARY, VARBINARY, BLOB类型的数据。
添加参数后的命令
mysqldump --default-character-set=utf8 --hex-blob databasename> 备份路径/bk_sql_$(date +%Y%m%d-%H%M%S).sql;
修改完后运行脚本查看编码正常。