一、问题描述
使用php连接mysql查询记录集到搜索页面显示中文乱码???(如下图所示)
数据库字符编码类型设置的是"utf-8"(如下图所示)
php文件字符编码格式为"utf-8"(如下图所示)
php连接数据库如下代码示例
<?php@b@ $q=$_GET["q"]; @b@ $con = mysql_connect('localhost', 'my1535594', '123456'); @b@ if (!$con){@b@ die('Could not connect: ' . mysql_error());@b@ } @b@ mysql_select_db("my1535594", $con); @b@ @b@ $sql="SELECT * FROM PMS_REP_VIEW WHERE TITLE LIKE '%".$q."%'";@b@ @b@ $result = mysql_query($sql,$con);@b@ $num_rows = mysql_num_rows($result);@b@ echo "<p >搜索结果:</p>";@b@ if ($num_rows==0){ @b@ echo "<p ><ul><li><font>没有查询结果,请确认关键词后,重试!!!</font></li></ul></p>"; @b@ }else{ @b@ while($row = mysql_fetch_array($result)){@b@ echo "<p class="s_list" >";@b@ echo "<ul>";@b@ echo "<li class="s_tit">◆ " . $row['TITLE']. "</li>";@b@ echo "<li class="s_zy" > <font>" . $row['ZHAIYAO'] . "</font></li>"; @b@ echo "</ul>";@b@ echo "</p>";@b@ } @b@ } @b@ mysql_close($con); @b@?>
二、解决方法
在数据连接之前修改字符集为对应编码集"utf-8",代码如下
... @b@ $sql="SELECT * FROM PMS_REP_VIEW WHERE TITLE LIKE '%".$q."%'";@b@ @b@ mysql_query("SET NAMES 'UTF8'",$con);@b@ mysql_query("SET CHARACTER SET UTF8",$con);@b@ mysql_query("SET CHARACTER_SET_RESULTS=UTF8'",$con);@b@ @b@ $result = mysql_query($sql,$con);@b@ $num_rows = mysql_num_rows($result);@b@ ...
这样所有字符集编码都统一为"utf-8"(如果数据库和文件显示编码设置的gbk,需要做相应调整),结果如下图所示: