开发者社区> 摩云飞> 正文

【转载】彻底解决Linux下MySQL 5.5的中文乱码问题

简介:
+关注继续查看

PS:昨天一同事遇到mysql 5.5中文乱码问题,找我解决。解决了,有个细节问题网上没人说,我就总结一下。

一、登录MySQL查看用SHOW VARIABLES LIKE ‘character%’;下字符集,显示如下:

+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| 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_database和character_set_server的默认字符集还是latin1。

二、最简单的完美修改方法,修改mysql的my.cnf文件中的字符集键值(注意配置的字段细节):

1、在[client]字段里加入default-character-set=utf8,如下:

[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8

2、在[mysqld]字段里加入character-set-server=utf8,如下:

[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
character-set-server=utf8

3、在[mysql]字段里加入default-character-set=utf8,如下:

[mysql]
no-auto-rehash
default-character-set=utf8

修改完成后,service mysql restart重启mysql服务就生效。注意:[mysqld]字段与[mysql]字段是有区别的。这点在网上没人反馈过。

使用SHOW VARIABLES LIKE ‘character%’;查看,发现数据库编码全已改成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/ |
+--------------------------+----------------------------+


4、如果上面的都修改了还乱码,那剩下问题就一定在connection连接层上。解决方法是在发送查询前执行一下下面这句(直接写在SQL文件的最前面):
SET NAMES ‘utf8′;

它相当于下面的三句指令:

SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;


网上很多其他方法不能彻底解决这个问题,这个可以完美解决!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
windows平台的文件传到linux平台出现中文乱码,从GBK到UTF8
在windows下编辑的内容,上传到linux平台通常会出现中文乱码。
11 0
Linux 解决Linux下火狐浏览器中文乱码成方块显示问题
Linux 解决Linux下火狐浏览器中文乱码成方块显示问题
38 0
Linux 终端编译后运行.c/.cpp文件中文乱码问题
Linux 终端编译后运行.c/.cpp文件中文乱码问题
300 0
05_Linux基础-NGINX编译安装^判断是否启动^修改端口^启动停止重启^相关路径^中文乱码-Windows、Linux文件传输
NGINX编译安装^判断是否启动^修改端口^启动停止重启^相关路径^中文乱码-Windows、Linux文件传输
80 0
MySQL - Linux下MySQL中文乱码(中文问号)解决办法
MySQL - Linux下MySQL中文乱码(中文问号)解决办法
308 0
180606-Linux下jdk中文乱码问题解决
之前遇到过一次中文乱码问题,是通过在jdk的jre目录下的lib/fonts文件中添加simsun.ttf字体文件解决,但是这次遇到一个奇怪的问题,同样的字体拷贝过去后,中文不乱但是英文乱码了 记录一下解决过程: 主要思路就是给系统安装中文字体,让系统本身就支持中文即可
166 0
Mac Terminal ssh连接linux服务器中文乱码
整理了近期在项目上做的一些技术研究,希望与大家共同探讨交流。 场景:Mac OSterminal 本地中文显示正常ssh 登陆linux,服务器中文显示乱码 尝试解决:方法1. (未解决)在本地与服务器执行 locale 命令, 发现字符编码一致,都是 zh_CN.UTF-8。
3293 0
Linux 中 Windows 中文乱码
Linux 下 Windows 源代码中文乱码 由于 windows 和 linux 对文本的编码方式不同,所以经常会有 windows 中生成的文本在 linux 中打开乱码的情况。 比如: 我面临的情况是现在有很多的源代码文件是处于这样的情况,如下图: 其中每个文件夹中包含了 java 源代码文件和子文件夹。
1294 0
+关注
摩云飞
十年磨一剑,我还差几年~~
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
ECS运维指南 之 Linux系统诊断
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多
相关镜像