首先,将乱码显示显式出来,主要是中文乱码:

MySQL查询出来是问号 mysql 查询乱码_MySQL

第一步:找到安装mysql的目录找到 my.ini 文件;

MySQL查询出来是问号 mysql 查询乱码_客户端_02

第二步:使用记事本打开my.ini文件,将默认编码设置为utf-8:

MySQL查询出来是问号 mysql 查询乱码_mysql_03

第三步:在mysql数据库cmd中输入:show variables like’%char%’;

MySQL查询出来是问号 mysql 查询乱码_MySQL查询出来是问号_04

第四步:改变原有数据库的编码方式:

MySQL查询出来是问号 mysql 查询乱码_客户端_05

第五步:改变后的编码方式:

MySQL查询出来是问号 mysql 查询乱码_客户端_06

第六步:重新查询:

MySQL查询出来是问号 mysql 查询乱码_MySQL查询出来是问号_07

MySQL中涉及的几个字符集

character-set-server/default-character-set:服务器字符集,默认情况下所采用的。
character-set-database:数据库字符集。
character-set-table:数据库表字符集。
优先级依次增加。所以一般情况下只需要设置character-set-server,而在创建数据库和表时不特别指定字符集,这样统一采用character-set-server字符集。
character-set-client:客户端的字符集。客户端默认字符集。当客户端向服务器发送请求时,请求以该字符集进行编码。
character-set-results:结果字符集。服务器向客户端返回结果或者信息时,结果以该字符集进行编码。
在客户端,如果没有定义character-set-results,则采用character-set-client字符集作为默认的字符集。所以只需要设置character-set-client字符集。

要处理中文,则可以将character-set-server和character-set-client均设置为GB2312,如果要同时处理多国语言,则设置为UTF8。

关于MySQL的中文问题

解决乱码的方法是,在执行SQL语句之前,将MySQL以下三个系统参数设置为与服务器字符集character-set-server相同的字符集。
character_set_client:客户端的字符集。
character_set_results:结果字符集。
character_set_connection:连接字符集。
设置这三个系统参数通过向MySQL发送语句:set names gb2312