MySQL查询乱码的解决方法

来源:互联网 发布:献成分血的危害知乎 编辑:程序博客网 时间:2024/05/17 08:07

如果遇到MySQL查询乱码的情况,应该如何解决呢?下面就将为您介绍一个处理MySQL查询乱码的方法,希望对您能够有所帮助。

使用mysql> select * from table into outfile 'c:\table.txt' where 条件
(或selet * into outfile from table where 条件 )

导出来的数据会出现MySQL查询乱码情况。同时使用
mysql>load data local infile 'c:\\table.txt' into table `table`

插入的数据也会出现乱码情况。

究其原因,这是mysql服务器系统变量中的character_set_database中默认的字符集问题。

解决方法:

在windows平台下mysql用作源导出数据库

  1. mysql> show variables like '%char%';
  2. +--------------------------+----------------------------+
  3. | Variable_name | Value |
  4. +--------------------------+----------------------------+
  5. | character_set_client | latin1 |
  6. | character_set_connection | latin1 |
  7. | character_set_database | latin1 |
  8. | character_set_filesystem | binary |
  9. | character_set_results | latin1 |
  10. | character_set_server | gbk |
  11. | character_set_system | utf8 |
  12. | character_sets_dir | D:\mysql\share\charsets\ |
  13. +--------------------------+----------------------------+

查看character_set_database,这里是latin1,latin1是装不了大字符集的mysql>set character_set_database=utf8; ##设置默认的字符集为utf8 mysql> select * from table into outfile 'c:\table.txt' where 条件

 

 

个人心得 

当我们已cmd命令打开连接设置 character_set_client character_set_results 等信息 ,其作用只限于当前连接,当重新打开另一个cmd连接时,其配置依旧是原始默认配置。

这也就是为什么我已DBVisoul查询数据时,数据显示的是ISSO8859-1的乱码,无论我怎么设置cmd命令窗口的参数,其结果不会影响DBVisoul的查询结果。其在数据库硬盘中的数据是正确的只是解码错误而已。 因此我应该修改mysql的my.ini永久配置文件将显示编码改为UTF8或GBK应该能解决ISS08859-1的乱码问题。