我的情况如下:
我的网页是GB2312编码的,我的数据库的编码是UTF8的,如果我想让数据库里的内容读到网页上,要加上mysql_query("set names gb2312") 这句话,可以解决乱码的问题,这样显示在网页上的就不是乱码了.但是当我在网页中加入一条插入数据库内容的语句,如果我不加mysql_query("set names gb2312")这句话,他插入数据库的内容是乱码,因为数据库的编码是UTF8,网页中的内容是GB2312编码,所以他显示乱码但是我加上mysql_query("set names gb2312")这句话后,加入数据库的内容就不会显示乱码我不明白的是mysql_query("set names gb2312")这句话,可以解决插入到UTF8数据库解决汉字乱码的问题?mysql_query("set names gb2312")这句话不是设置字符集为GB2312吗?为什么插入UTF8数据库里不会乱码?相反我不加这句话就会显示乱码呢?高手们帮帮小弟吧

解决方案 »

  1.   

    set names 是用来设置客户端的字符集,与服务端没关系,
    set names gb2312 等于是插入之前告诉数据库我是以gb2312的编码进来的,数据库根据进来时的编码来处理它,如果不加这句,数据库就不知道它是以什么编码进来的,这样就出现乱码了同样道理 查询的时候,用set names gb2312 告诉数据库,我想得到gb2312编码的数据,你给我返回gb2312编码数据吧,数据库就给出gb2312的数据了,如果不加,给出的就是utf-8,显示到网页上就成乱码了
      

  2.   

    set names就像一个通知。set names 今天放假 。以后三天就放假了。
      

  3.   


    $sql = "insert into table values(".iconv('utf-8','GB2312',$values).");"
    mysql_query($sql,$conn);