我是菜鸟,什么都不懂,所以大大们请讲的简单实用一点。现在有这么种情况,数据库是latin1的,表中有两个字段,在这样输出时
set names utf8;
select col1,col2 from tb;
两列都有输出值,都是乱码。这样输出时
set names latin1;
select col1,col2 from tb;
COL2输出正常,COL1是空的然后用工具的导出功能,指定字符集为1252 latin1,COL1,COL2单独导出是都正常的,一起导出时,COL1正常,COL2变成另一种乱码。现在就想让这两列都正常输出,有什么办法可以尝试的?

解决方案 »

  1.   

    tb这个表是什么字符集 这2列又是什么字符集..
    set name utf8的意思是你的客户端以UTF8的方式向MYSQL服务器提交数据;如果你的表 列字符集是默认的 那就是你表 列都是 latin1字符集
    你插入Utf8的数据 当然会出现乱码。。同理 
    set names latin1的意思是你的客户端以latin1的方式向MYSQL服务器提交数据;
    与数据库一样 就没问题至于你说的COL2输出正常,COL1是空的 这个还要看看你的字段字符集是不是特制定过
      

  2.   

    你想正常输出 ..那你首先要保证插入的时候就要规范 你自己测试着玩的话 你就不要用set names...你指定好自己的列字符集 ...你插入符合字符集的数值...肯定能正常输出
      

  3.   

    怎么看列的字符集?通过show create table tb吗?
      

  4.   


    show create table tb 可以看 
    如果没特别写出列的字符集 那就是默认的表的字符集了 表也没特别写出来那就是数据库的字符集了。。还可以使用 
    use dbname;
    select  CHARACTER_SET_NAME 
    from information_schema.columns
    where table_name='xx';
      

  5.   

    还有一个就是客户端编辑器使用的是什么字符集?你的col2没显示肯定和此有关
      

  6.   

    编辑器是navicat,我也不知道怎么看使用的是什么字符集。如果是因为两列的字符集不一样怎么能让两列都正常输出?
      

  7.   

    按下贴中的方法贴出你的检查结果http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码