mysql默认编码设置成gbk,解决dos下查询中文乱码的问题!

时间:2022-04-22 20:14:40

通常情况下,当我们数据库用的是gbk的编码,在 php和 phpmyadmin中查询中文都没什么问题。但是一旦我们是从命令行用dos窗口登录的。查询出来的结果中有中文的,就会出现乱码问题。解决这个问题的方法就是设置mysql的默认编码为gbk;

具体如下:

MySQL的默认编码是Latin1,不支持中文,那么如何修改MySQL的默认编码呢,下面以gbk为例来说明

需要注意的是,要修改的地方非常多,相应的修改方法也很多。下面是一种最简单最彻底的方法:

一、Windows
1、中止MySQL服务
2、在MySQL的安装目录下找到my.ini,如果没有就把my-medium.ini复制为一个my.ini即可
3、打开my.ini以后,在[client]和[mysqld]下面均加上default-character-set=gbk,保存并关闭
4、启动MySQL服务

二、Linux
1、中止MySQL服务(bin/mysqladmin -u root shutdown)
2、在/etc/下找到my.cnf,如果没有就把MySQL的安装目录下的support-files目录下的my-medium.cnf复制到/etc/下并改名为my.cnf即可
3、打开my.cnf以后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭
4、启动MySQL服务(bin/mysqld_safe &)

非常简单,这样的修改一劳永逸,今后MySQL一切相关的默认编码均为UTF-8了,创建新表格的时候无需再次设置

需要注意的是,当前数据库中已经存在的数据仍保留现有的编码方式,因此需要自行转码,方法在网上有很多,不再赘述

window 下设置截图:

# The following options will be passed to all MySQL clients
[client]
#password    = your_password
port        = 3306
socket        = /tmp/mysql.sock
default-character-set=gbk

# Here follows entries for some specific programs

# The MySQL server
[mysqld]

设置前的查询结果:

mysql> select * from nav;
+—-+———-+————–+———–+
| id | nav_name | nav_link     | nav_order |
+—-+———-+————–+———–+
|  1 | ??         | new_list.php    |         1 |
|  4 | 222       | 222                |        22 |
|  3 | ??         | message.php   |       33 |
|  5 | ????      |                       |         0 |
+—-+———-+————–+———–+
4 rows in set (0.00 sec)

设置好重启mysql之后的结果 :
mysql> select * from nav;
+—-+———-+————–+———–+
| id | nav_name | nav_link     | nav_order |
+—-+———-+————–+———–+
|  1 | 新闻     | new_list.php |         1 |
|  4 | 222      | 222              |        22 |
|  3 | 留言     | message.php  |        33 |
|  5 | 网站首页 |                 |         0  |
+—-+———-+————–+———–+
4 rows in set (0.00 sec)

如果 你的编码是utf-8,刚调成utf8重启即可。