本帖最后由 zhaozhong3 于 2009-10-23 05:11:22 编辑

解决方案 »

  1.   

    连接数据库时选择的什么字集??
    mysql_query("SET NAMES 'gb2312'");
      

  2.   

    忘记放链接了啊:http://blog.csdn.net/yw1386/archive/2009/10/14/4671845.aspx
      

  3.   

    要保证utf8的是
    1、数据库字符集
    2、页面
    3、所有php页面
    4、mysql_query("SET NAMES 'utf-8'");
      

  4.   

    乱码问题天天有,月月有...你insert/update数据入mysql的时候,得告诉mysql你当前数据是什么编码格式.
    你select数据出mysql的时候,得告诉mysql你想要返回的是什么编码格式的数据.
    mysql会自动帮你转换,你只需要清楚告诉mysql,你想要用什么编码与mysql交互.
    mysql_query("set names 编码格式");合3条语句为一体
    1.set character_set_client = 编码格式 #告诉mysql你的语句是什么编码
    2.set character_set_connection = 编码格式 #告诉mysql将语句转成什么编码格式与数据表通话.
    3.set character_set_results = 编码格式 #告诉mysql返回什么编码格式给你的php业务端从mysql读出什么编码的数据后,须告诉browser,以正确的编码去读这些数据
    比如返回的是utf-8,就用html的meta标签或者php的header去命令browser以什么样的编码格式读取数据.
    html: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    php : header('Content-type:text/html;charset=utf-8');
      

  5.   

    要保证utf8的是 
    1、数据库字符集 
    2、页面 
    3、所有php页面 
    4、mysql_query("SET NAMES utf8");这样应该就不会有问题的
      

  6.   

    我是用Dreamweaver建立的PHP页面,Dreamweaver里默认设置了使用utf-8作为默认字符集。只是用它新建的PHP文件,是带有HTML头信息的,对于那些要require()的php文件,我就把HTML部分全删除了,使页面以<?php ?>开头和结尾。不知删除了HTML的头信息部分,会不会对php文件的字符集产生影响,我再确认一下。另外,“mysql_query("SET NAMES 'utf-8'");”这个语句我加过,加入后,除了数字意外,反而全部汉字字符都变成乱码了。
      

  7.   


    mysql_query("SET NAMES 'utf8'");”//mysql是utf8,php是utf-8,注意这个小区别.
      

  8.   

    谢谢各位我加的是 “mysql_query("SET NAMES 'utf8'");”,加过后,原来的中文字符全部变成乱码。
    “mysql_query("SET NAMES 'utf-8'");”我也试了,显示没变化。
      

  9.   

    mysql_query("set names 'gb2312'");
    试试?
      

  10.   

    mysql_query外面不要用双引号!
      

  11.   

    lz,你insert进数据库的时候,确认数据是utf-8么?你用phpmyadmin(browser选择utf-8)去看那些数据,是正确的么
      

  12.   

    问题解决了,我在提交页面和读取页面同时加入了“mysql_query("SET NAMES 'utf8'");”,就正常了,之前只单独加在了提交页面或读取页面。yw1386,你的文章我看了,很有帮助,我用了你文章中提到的“$code=mb_detect_encoding($filename)”语句检查了我的字符串的类型,发现在我自己电脑上,会输出“UTF-8”,而在服务器上则没有任何输出,显然是服务器上的字符串不符合任何一种编码规则,因此才没有mb_detect_encoding才没能显示结果。另外,你文章中的mysql_query("SET NAMES 'utf-8'")是否该改为mysql_query("SET NAMES 'utf8'");”呢?再次感谢大家的热心回复!
      

  13.   

    在连接数据库,选择数据库后,再添加一句mysql_query("SET NAMES 'gb2312'");就好了。我也是这样的。
      

  14.   

    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  15.   

    总之,就是用 “mysql_query("SET NAMES 'utf8'");”写入标准的UTF-8,之后再用同样的语句按标准读出UTF-8。在我自己的电脑上,不加“mysql_query("SET NAMES 'utf8'");”语句,写入和输出也都是正常的。但在服务器上则不然。不知道这是否是由于WINDOWS和UNIX系统环境的差异引起的,或是Apache、MySQL不同版本间处理字符的细微差别造成的。幸好我把数据库连接字串和连接函数都写在了conn.php中,因此每个需要建立数据库连接的页面都会引用conn.php,我把“mysql_query("SET NAMES 'utf8'");”加到这个页面里了,之后所有的页面就全部正常了。省得挨个修改每个页面了。再次感谢各位热心回复的朋友!