使用PHP直接用echo打印数据库里查询出来的内容的时候,出来的内容全部都是正常的,但结合Smarty后,页面里出现的内容就成乱码了,请问下各位PHP高手,如何解决这样问题。
   本人刚学PHP不久,还请各位给予帮助。
   数据库设计:
create database demo character set utf8;
create table tb_notice(id int primary key auto_increment,title varchar(64),memo varchar(200),addtime date);
insert table tb_notice(title,memo,adddtime) values('测试中文','测试中文',curdate());require_once(root.'/includes/db_class.php');
require_once(root.'/includes/config.php');
require_once(root.'/includes/function.php');$result = $db->query('select * from tb_notices');   header('Content-Type:text/html;charset=gbk');
$smarty->assign("pageTitle","新闻内容");
$smarty->assign("newsCount",$db->num_rows($result));
$smarty->assign("newsList",$db->fetch_array($result));$smarty->display("default.html"); //显示模板页面循环为:<{section name=item loop=$newsList}>
<{$newsList[item].title}>
<{/section}>还请各位帮助。谢谢

解决方案 »

  1.   

    header('Content-Type:text/html;charset=utf8');
      

  2.   

    哎,还是自己回答吧,Smart似乎不能直接对数据库返回的结果进行直接操作,要对其转换为数组后才可以进行操作。
      

  3.   

    兄弟你写的就是smarty对数组操作啊!!,$db->fetch_array($result)肯定返回的数组啊!!
    你的错误再: header('Content-Type:text/html;charset=utf-8');这里!!呵呵!!最近我对是smarty研究还是挺深的了!
      

  4.   

    如果Smarty能操作的话,你能解释下,为什么我在前台显示出来的都是每个字段的第一个字符吗?
      

  5.   

    把头部的编码改成
    header('Content-Type:text/html;charset=utf-8');