各位高手,我用
select * from mytable into outfile '/tmp/dbinfo.txt';后得到的中文字符乱码。
需要怎么设置解决乱码问题?另外两个问题:
我在mysql客户端中直接执行 select * from mytable;得到的中文字符时正常的;
在代码中执行select * from mytable 返回结果集,再自己写文件,得到的中文字符也是正常的。
请问这是为什么?谢谢各位~

解决方案 »

  1.   

    建議可考慮使用 mysqldump  的指令試匯出看看...
      

  2.   

    show varialbles like 'char%';
    确保所有的字符集都是gbkmysql> show variables like 'char%';
    +--------------------------+-------------------------------------------+
    | Variable_name            | Value                                     |
    +--------------------------+-------------------------------------------+
    | character_set_client     | gbk                                       |
    | character_set_connection | gbk                                       |
    | character_set_database   | gbk                                       |
    | character_set_results    | gbk                                       |
    | character_set_server     | gbk                                       |
    | character_set_system     | utf8                                      |
    | character_sets_dir       | d:\mysql-5.0.9-beta-win32\share\charsets/ |
    +--------------------------+-------------------------------------------+这样导出不致于乱码
      

  3.   

    set names 'gbk'
    select * from mytable into outfile '/tmp/dbinfo.txt';
    可以参考下贴中的说明。
    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  4.   

    谢谢各位!to ACMAIN_CHM:
    十分感谢你多次帮助。
    试了你的方法,但还是不行:(我之前的的设置是:
    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          utf8set names 'gbk'后,
    character_set_client          gbk
    character_set_connection      gbk
    character_set_database        latin1
    character_set_filesystem      binary
    character_set_results         gbk
    character_set_server          latin1
    character_set_system          utf8
    但这时候 select * from mytable into outfile '/tmp/dbinfo.txt';得到的中文字符还是乱码~
    为什么呢?其实我更想知道的是:
    之前我的设置全是latin1时,
    1,在mysql客户端中直接执行 select * from mytable;得到的中文字符时正常的;
    2,在代码中执行select * from mytable 返回结果集,再自己写文件保存,得到的中文字符也是正常的。
    为什么这两种情况下得到的中文字符是正常的,而select * from mytable into outfile '/tmp/dbinfo.txt'  dbinfo.txt中的中文字符就乱码?
      

  5.   

    你导出后,用WORD打开文件,看看有无提示
      

  6.   

    show create table 你的检查结果贴在哪儿了?
      

  7.   

    嗯,用word打开两个文件有选择文本编码的提示:
    在代码中执行select * from mytable 返回结果集,再自己写文件保存的文本用word打开,编码是GB2312;
    但是select * from mytable into outfile '/tmp/dbinfo.txt';用word打开dbinfo.txt,编码是UTF-8.
    这就解释了为什么前者显示正常,后者乱码了。
    但是没想明白的是为什么有这两种编码的差异?
      

  8.   

    网络不通,贴不了,敲在下面吧~CREATE TABLE 'mytable'(
    ...
    )ENGINE=InnoDB AUTO_INCREMENT=84 DEFAULT CHARSET=utf8 COLLATE 'utf8_gemeral_ci'