我的网页指定gb2312编码,mysql的character_set_client,character_set_connection,character_set_results都是指定为gb2312,数据库跟表指定为utf-8,结构是一个add_article.php和save_article.php,add_article.php指定为gb2312,save_article.php中如果加了set names这个语句就添加不了,如果没加就能添加,但是添进去的却是乱码,不知怎么回事,先谢大家,帮个忙,搞了好几天了。

解决方案 »

  1.   

    php 和 mysql的版本报一下 (问的问题不是很理解)
      

  2.   

    这个要看一个你的mysql字符集的编码了,可以安装一个phpmyadmin来查看,比较方便,跟php,和mysql无关,是由于你的编码设置的问题。
      

  3.   

    这个要看一个你的mysql字符集的编码了,可以安装一个phpmyadmin来查看,比较方便,跟php,和mysql无关,是由于你的编码设置的问题。
      

  4.   

    问题可能出在save_article.php中,
    你的是set names gb2312吧?
    在执行sql前以gb2312编码打印sql语句,你就会发现问题。
      

  5.   

    我曾经也遇到了这样的问题,页面编码是GB2312,数据库是UTF-8的,我之前的解决方法:
    1. 对页面数据保存时进行转码,比如对某个字符变量使用转码函数iconv("GB2312","UTF-8",$_POST['name']) GB2312转UTF-8等进行编码转换;
    2. 页面和数据库统一编码规范。不过话说回来,对字符转码是php编程中最为常见的,建议楼主试试!
      

  6.   

    你调试程序可以分开几步来:
    1. 你先看看当你保存数据之前取到的数据是不是乱码,如果是说明页面传参过来的变量就是乱码,试试转换编码格式
    2. 如果 1. 你得到的答案不是乱码,那就是存入数据库是乱码,在这个地方处理转换编码格式至于用那个转换字符 编码格式合适, php这样的函数很多,建议楼主挨个试试,这样既熟悉了转码函数又可以解决问题。
      

  7.   

    谢谢大家的帮助,我按照zhangmlying的方法去调试,发现收到的变量没有乱码,但是存到数据库里时却乱码了,怎么转换都没用,大家能否说一下具体怎么操作,先谢谢各位了。
      

  8.   

    在你存数据之前把变量 用转码函数处理一下  php有很多转码函数的,你多试试,我曾经做过这方面的Bug修改。只能试php处理转码的函数,不能确切的给你!
      

  9.   

    首先你要确信,如果你用了set names gb2312;
    并且在gb2312编码下sql打印出来没有乱码,那么存到数据库中的就是正确地。如果还是有问题你就要看是不是你查询数据库的地方出错,而并不是插入数据出错。一步步来,逐步锁定出问题的位置。
      

  10.   

    首先你要确信,如果你用了set names gb2312;
    并且在gb2312编码下sql打印出来没有乱码,那么存到数据库中的就是正确地。如果还是有问题你就要看是不是你查询数据库的地方出错,而并不是插入数据出错。一步步来,逐步锁定出问题的位置。
      

  11.   

    链接的下面加上这句
    my_query("set names gb2312");
      

  12.   

    首先数据库的连接校对要设置为gb2312推荐你使用PHPMYADMIN吧。很方便的。