MySQL数据库中文显示乱码解决方法

深度链接 / 2023-12-06 21:48:19 / 178

做项目时发现插入数据库的中文在终端显示乱码

1、系统环境

[root@wrx tmp]# uname -sir
Linux 2.6.32-696.el6.x86_64 x86_64
[root@wrx tmp]# mysql --version
mysql  Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1

#或

[root@wrx tmp]# rpm -qa | grep mysql
mysql-5.1.73-8.el6_8.x86_64
mysql-libs-5.1.73-8.el6_8.x86_64
mysql-server-5.1.73-8.el6_8.x86_64

2、查看数据库编码信息

输入mysql> show variables like "char%"查看数据库编码信息,latin1编码不支持中文,因此需要将编码设置为utf8。

mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

image.png


3、修改mysql配置文件

#编辑my.cnf文件
[root@wrx ~]# vim /etc/my.cnf 

#增加内容如下
[client]
default-character-set=utf8 #添加此行

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server=utf8  #添加此行
init_connect='SET NAMES utf8' #添加此行

[mysql]
default-character-set=utf8 #添加此行

#保存修改,重启mysqld
[root@wrx ~]# service mysqld restart
Stopping mysqld:                                           [  OK  ]
Starting mysqld:                                           [  OK  ]

#再次查看数据库编码信息
mysql> show variables like "char%";
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

mysql> 

注:如果修改后重启mysqld再次查看数据库编码信息和上面不一致,重新登录mysql输入上面命令试试看