我刚开始学习php,我安装的环境是集成的wamp包,然后在mysql中插入中文,在MySQL中的数据看上去都是正确的没有乱码,但是当我从PHP页面上插入一条数据,或者利用php页面从数据库中提取的数据都是‘?’,怎么弄啊?

解决方案 »

  1.   

    数据库编码和网页编码要一样,最好都是utf8
      

  2.   

    浏览器的编码选项默认都是自动检测,网页中加上 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>,浏览器就会用你指定的编码了,除非用户指定了编码
      

  3.   

    在添加或者查询的时候加上这句   mysql_query("set names 你自己的编码");
      

  4.   


    我的connDB.php中这样写的:
    <meta http-equiv="Content-Type" content="text/html; charset=utf8"/>
    <?php
    $conn = @mysql_connect("localhost","root","liyang") or die ("连接错误!");
    mysql_select_db("newdb",$conn);
    $sql="select * from test";
    $result=@mysql_query($sql,$conn) or die("查询错误");
    while($row=mysql_fetch_array($result))
    {
    echo $row[uid]."<br><hr>";
    }
    ?>
    然后在MySQL的newDB数据库下中执行以下代码
    set names utf8在phpMyAdmin 表test 的整理中显示gbk_chinese_ci,而在下面的“1个表中”整理显示utf8_unicode_ci但是在页面中还是现实???,我哪里设置错了?
      

  5.   

    charset=utf-8
      

  6.   

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
      

  7.   

    看看这个吧,自己总结的,处理编码问题,希望对你有用哦:http://blog.csdn.net/yw1386/archive/2009/10/14/4671845.aspx
      

  8.   

    HP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码 收藏
    老声长谈,着是困惑很多人的问题,如果处理不好,都是乱码,说这些话并不是我对编码很精通,只是在这方面是得留神,自己总结了一点小经验(容易出现乱码的地方有php文件里面 ,数据库里面 存储 的编码 ,页面显示 ,数据传输 ):
    1.在建数据库的时候,尤其是用phpMyAdmin与MYSQL打交道时候,一般都是utf-8,字段为 utf8_general_ci
    数据库的设置:
    在my.ini文件中查找:
    [mysql]
    default-character-set = utf8
    [mysqld]
    default-character-set = utf8
    init_connect = 'SET NAMES utf8 '
    全部设置为utf8
    保存,重新启动mysql服务2.在与数据打交道的时候mysql_query("set names 'utf8'");注意是:utf8,不是 utf-8
    3.PHP的文件默认的编码是ANSI ,需要转换为UTF-8 ,至于怎么转换editplus就有这样的功能,“另存为”的时候有选择编码UTF-8 ,注意:不能选择:UTF-8 + BOM,如果选择这个了 ,你在处理session的时候就会出现问题,所以一定要注意.还有有的人在eclipse,Myeclipse,ZendStudio里面开发,eclipse里面默认的是ISO-8859-1,需要在“窗口 ”->“首选项 ”打开“首选项”窗口,在左侧“常规 ”->“工作空间 ”,在“文本文件编码 ”里面设置默认的编码为utf-84.就是PHP文件里面要说明:如<meta http-equiv="Content-Type" Content="text/html;charset=utf-8">
    或者
    view plaincopy to clipboardprint?
    <?php header('Content-Type:text/html;charset=utf-8');?>  
     5.还有就是处理中文等双字节的时候也有可能出现乱码,PHP里面可以采用的有iconv,mb_convert_encoding来处理双字节,其余的可以参考PHP帮助手册
    6.在补充一点(遗漏的一点),在你的程序里面你要知道数据之间的传递也有可能存在编码问题的,但是你又不知道传递过来的数据是采用的什么编码,在PHP里面提供了方法来处理的,下面是自己写的一个简单方法,可以参考一下
    view plaincopy to clipboardprint?
    //编码转换  
            function display_fileencoding($filename)  
            {  
                if(extension_loaded("mbstring"))  
                {  
                    $code=mb_detect_encoding($filename);//检测字符串编码  
                    $filename=mb_convert_encoding($filename,"UTF-8",$code);//将编码$code转换为utf-8编码  
                    return $filename;  
                }  
                else  
                    die("请检查系统是否正确安装配置mbstring");  
            }  
    要确保mbstring在你的php.ini中启用
    7.保证以上几处编码一致就可以了!!数据库,网页输出都不会出现乱码了,如有不对的,请留言指出!!
    以下是正确的代码:<meta http-equiv="Content-Type" Content="text/html;charset=utf-8">
    <?php
    $conn = @mysql_connect("localhost","root","liyang") or die ("连接错误!");
    mysql_select_db("newdb",$conn);
    $sql1="set NAMES utf8";
    $result = @mysql_query($sql1,$conn) or die("设置字体错误!");
    $sql="select * from test";
    $result=@mysql_query($sql,$conn) or die("查询错误");
    while($row=mysql_fetch_array($result))
    {
    echo $row[uid]."<br>";
    }
    ?>