在网上搜了半天,也试了半天,按照网上的方法:步骤一 命令行执行:mysqldump --opt -hlocalhost -uroot -p*** --default-character-set=lantin1 dbname > /usr/local/dbname.sql步骤二 将 dbname.sql文件中的create table语句的CHARSET=latin1改为CHARSET=utf8步骤三 在dbname.sql文件中的insert语句之前加一条'set names utf8;'步骤四 将dbname.sql转码为utf-8格式,建议使用UltraEditor,可以直接使用该编辑器的'转换->ASCII到UTF-8(Unicode编辑)',或者将文件另存为UTF-8(无BOM)格式步骤五 命令行执行:mysql -hlocalhost -uroot -p*** --default-character-set=utf8 new_dbname < /usr/local/dbname.sql按照上述方法做了以后,发现:若新存入数据,是按照utf8格式存储的,但数据库中原有的数据,用php读取后,PHP文件加:header("Content-type:text/html;charset=UTF-8"),却发现读取出来的并不是utf8格式的,而还是GBK格式的,要用"iconv('gb2312','utf-8//IGNORE',$pro);"转换成utf-8的格式才能正确显示,否在就是乱码。    
      但若PHP文件加:header("Content-type:text/html;charset=gb312"),的话,就能正确显示。不知道为什么?????(就是好像旧数据没有改变成utf8格式)望各位帮帮忙!!!谢谢

解决方案 »

  1.   

    好像可以直接改mysql下的配置文件
      

  2.   

    检查一下php取数据时候用什么编码,这个可能影响返回结果的字符集
      

  3.   

    用SHOW CREATE TABLE TT看看结果,用MYSQLDUMP导出TXT,再在新的字符集下建立库、表,再导入
      

  4.   

    我是用php直接从数据库中读取数据,然后直接显示,不知道PHP读取数据还有编码的问题?
    能说说吗?
      

  5.   

    如果字符集不一样还是会有问题的。参考一下这个贴子
    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码