PHP文件里要输出的中文在浏览器里显示乱码

我的index.php使用index.tpl模板,两个文件的编码都是utf-8。
index.php中,$template->setVariable("CUSTOMERNAME","张三");
index.tpl
中,含有 <meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"> 以及 <p>Copyright © 2009-2014 版权所有</p>
这两个片段。但是,在浏览器里,“张三”显示的是乱码,“版权所有”显示的是中文。
我晕了,“张三”不是还被引号括起来了却不能输出,“版权所有”没被引号括起来都可以显示,这是为什么呀
没加 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 之前,张三是可以显示的,版权所有是乱码;加了就颠倒过来了。。

1、版权所有 是模板页面直接输出,你的页面设置了UTF8编码所以没问题 。
2、张三 是PHP文件中用函数的方式存在变量中的,问题出在PHP文件中。

解决办法:
第一步
< ?php
header("content-Type: text/html; charset=Utf-8"); //设置字符的编码是utp-8
mysql_query('set names utf8');
?>
*************************************************************************************************
如果这样还不行,第二步
<?php
$temp=utf8Encode('张三');
$template->setVariable("CUSTOMERNAME",$temp);
?>
************************************************************************************************
如果这样还不行,第三步
php页面
<?php
$temp=urlencode('张三');
$template->setVariable("CUSTOMERNAME",$temp);
?>
模板页面
输出时用urldecode函数解码
******************************************************************************************************
如果这样还不行,第四步
结合第三步,用mb_convert_encoding或者iconv函数。这两个函数的用法你百度一下就知了。
******************************************************************************************************
如果这样还不行,第五步
我也没办法啦,555555追问

第一步,还是乱码。。
第二步,utf8Encode()这个函数它不认怎么办
第三步,模板页面是html,它不认函数呀。。怎么用urldecode函数解码??
Fatal error: Call to undefined function utf8Encode()

追答

在 php.ini里将; extension=php_mbstring.dll 前面的 ; 去掉 ,然后重启服务器再用上面函数。
例子:
setVariable("CUSTOMERNAME",$temp);
//模板页直接调用不用解码,你再试下
?>

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-07-07
你的数据库里的编码是UTF8吗?
相似回答