最近打算写个mysql的条件备份脚本,通过脚本查询一张有中文字段的表时出现了查询结果为???的情况,进入容器后手动查询仍然为???,判断数据库的字符集出现问题
首先检查是否是mysql字符集出现问题,查询后发现存在Latin1的编码,查询后发现latin1不支持中文,但是不确定是哪个导致的乱码,每个都试下修改成utf8,看看效果。
SHOW VARIABLES LIKE ‘character%’;查看mysql字符集
SET character_set_client = utf8 ;在线修改字符集,但只对当前回话有效,退出后或者重启数据库失效。需要永久生效需要在my.cnf中添加配置 default-character-set= xxx
经过测试发现修改character_set_results为utf8后,中文字符恢复正常
不用以上方法也可解决中文乱码问题,在外部连接数据库时添加–default-character-set=utf8即可