PHP输出变量乱码,正常输出汉字却不会乱码,花了几个小时在网上找方法,全部都试了没有用,求解答
看了一下,你用的是UTF-8 编码,因此有以下点位检测是否是UTF-8编码:
1、数据库的字符编码;
show variables like '%char%'; 看一下是不是都是utf8
2、数据库的连接字符编码;
php 连接mysql 设置:set names utf8
3、程序代码文件的字符编码;
代码编辑器查看
4、网页输出显示的字符编码;
另外,sql查询结果直接先打印一下,先别做任何处理。如:echo $row['cn_name']
是读取数据库出现的乱码吧
在连接数据库时,加上以下代码:
....
$db->set_charset("utf8");
如果是PDO连接用以下代码:
$db->query("set names utf8");
完整PDO示例:
try {
$db=new \PDO($config['PDO_DSN'],$config['PDO_USER'],$config['PDO_PASS']);
$db->query("set names utf8");
}catch(Exception $e){
echo$e->getMessage();
exit();
}
$db->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE,\PDO::FETCH_ASSOC);
另外检查文档是否是UTF-8保存,编码是否加上UTF-8