解决mysql中的数据、表、字段、数据库中含中文,sql语句用phpmyadmin正常,用php乱码
过程化:
<?php header('Content-type: text/html; charset=UTF-8');//当html语句中有<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">则不必加此句 if(!($link=mysqli_connect ('localhost','user_name','password')))die ( '数据库连接失败,错误码: ' . mysql_error ()); if(!mysqli_select_db($link,'database_name'))die('选取数据库失败,错误码: ' . mysql_error ()); if(!mysqli_query ($link,'SET NAMES utf8'))echo"set names utf8 失败"; if(!($result=mysqli_query($link,"select * from table_name")))die('设备表查询失败!<br/>'); while($row = mysqli_fetch_row($result)){echo $row[0],'<br/>';} ?>
路障解决要点:line2与line6必须同时正确。编码可同为utf8或gbk,但当为utf8时,line2必须有“-”,line6必须无“-”,大小写任配。
面向对象:
<?php header('Content-type:textml;charset=utf-8'); $mysqli=new mysqli("localhost","user_name","","database_name"); $mysqli->query("SET NAMES utf8"); //实例化mysqli $query="select name from table_name"; $result=$mysqli->query($query); if ($result) { if($result->num_rows>0){ //判断结果集中行的数目是否大于0 while($row =$result->fetch_array() ){ //循环输出结果集中的记录 echo ($row[0])."<br>"; echo "<hr>"; } } }else { echo "查询失败"; } ?>
ps:队长解决问题给的代码
扩展:
1、utf-8:UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。UTF-8用1到6个字节编码UNICODE字符。用在网页上可以同一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。--百度百科
2、gb2312、gbk、utf-8的区别:GB 就是国标的意思,GB2312和GBK主要用于汉字的编码,而UTF-8是全世界通用的。意思就是说,如果你的网页主要面对使用汉语的中国人的话,使用 GB2312和GBK非常好,文字储存体积要小,有一些优点。如果你的网页要面向世界的话,你再用GB2312和GBK作为网页编码的话,有些电脑上的浏 览器没有这种编码,你的网页汉字内容就会变成无法识别的乱码。--百度文库