我现在用的是php连接mssql数据库,从数据库读取数据在php直接输出是正常的,但是传到页面上的时候显示的就是乱码了,我的编码格式设置的是UTF-8,如果页面转换成gb-2312显示的是正常,可是怎么才能在UTF-8下显示正常呢,因为我要支持语言很多,如果用gb-2312从数据库里读取韩文就是乱码了,所以现在只能用utf-8的,希望哪位朋友帮忙解决一下,谢谢!!

解决方案 »

  1.   

    从mssql中读出来的数据是gbk编码的,转一下编码就能在utf8页面中显示了
      

  2.   

    参考:
    http://blog.csdn.net/yw1386/archive/2009/10/14/4671845.aspx
      

  3.   

    如果页面转换成gb-2312显示的是正常,
    --------------------------------如果页面输出时要换成gb-2312, 那正明你输入时也是gb-2312
    1. 先确定一下你在输入数据库时的保正数据是utf-8编码
       
        输入数据库前转码, 如 mysql_query("SET NAMES utf8");
    2. 再设置网页的head头为utf-8
      

  4.   

    在连接数据库时加上mysql_query("SET NAMES utf8");
    utf-8可以换成你数据库的编码
      

  5.   

    我方法都试了,还是不好用,可能我刚接触php,程序写的有问题,希望哪位朋友能帮忙写个例子
    数据库操作:
     function query($sql)
        {
            $this->connect();
            $res = mssql_query($sql,$this->link);        $this->close();
            return $res;
        }
    function getResult($sql)
        {
            $res = $this->query($sql);
            while($row=mssql_fetch_assoc($res))
            {
                $r[] = $row;
            }
            unset($row);
            mssql_free_result($res);        return $r;
        }
    php页面
    $sql = "SELECT TOP 10 news_id,news_ztitle,news_img,news_zytext FROM gcd_content WHERE news_class2=50 and news_state=1 and news_img <>'' and news_img is not null order by state_time desc"; $AdminResult= $db->getResult($sql);
    现在就是遍历$AdminResult后news_ztitle,news_zytext显示都是乱码
      

  6.   

    function query($sql) 
        { 
            $this->connect(); 
            mysql_query("SET NAMES utf8");       //看这行        $res = mssql_query($sql,$this->link);         $this->close(); 
            return $res; 
        } 
    function getResult($sql) 
        { 
            $res = $this->query($sql); 
            while($row=mssql_fetch_assoc($res)) 
            { 
                $r[] = $row; 
            } 
            unset($row); 
            mssql_free_result($res);         return $r; 
        } 
      

  7.   

    这个我加了,也不好用,我是mssql_query()
      

  8.   


    加了之后, 用phpmyadmin打开数据库,看看里面是不是乱码?数据设置是否utf-8 ?
      

  9.   

    数据库,php输入, 文件编码, 网页页头
    统一用一种格式,绝对没乱码
      

  10.   

    一大群人都没看见楼主用的是sqlserver吗?
    还嚷嚷着叫人用set names utf8 ??
    sqlserver不认这个!在页面输出是
    这样用就没乱码了
    <?php iconv('GBK','UTF-8',news_ztitle)?>
    <?php iconv('GBK','UTF-8',news_zytext)?>
    有中文的字段都要转编码
      

  11.   

    <?php iconv('GBK','UTF-8',$row['news_ztitle'])?>
    <?php iconv('GBK','UTF-8',$row['news_zytext'])?> 
    更正一下
      

  12.   


    我试了在php里面<li><a href='#'><img src=".$row['news_img']. " /></a>
                     <strong><a href='3'>".iconv("GBK","UTF-8",$row['news_ztitle']) . "</a></strong>
                     <span> " . iconv("GBK","UTF-8",$row['news_zytext'])."<font><a href='#'>[详细]</a></font>
                     </span>
                  </li>
    这样写返回字符串到页面是好用的,在页面上
    {foreach from=$FaZhanYG item=fz}
                         <li>
                             <a href="#"><img src="/op/images/ad_4.jpg"  /></a>
                                <strong><a href="3"><?php iconv('GBK','UTF-8',{$fz.news_ztitle})?></a></strong>
                                <span>
                                 <?php iconv('GBK','UTF-8',{$fz.news_zytext})?>...<font><a href="#">[详细]</a></font>
                                </span>
                            </li>
                            {/foreach}这样写就不好用了
    是不是我写的有问题?我配的是smarty模板。
      

  13.   

    在smarty加载之前, 在数据用iconv()转码
    iconv('GBK','UTF-8',$data);
    $smarty->assign('data',$data);
    ...
    ...
    $smarty->display('...');