如果遇到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用作源导出数据库
- 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 | gbk |
- | character_set_system | utf8 |
- | character_sets_dir | D:\mysql\share\charsets\ |
- +--------------------------+----------------------------+
查看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的乱码问题。