set names解决中文乱码 php&sql

解决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作为网页编码的话,有些电脑上的浏 览器没有这种编码,你的网页汉字内容就会变成无法识别的乱码。--百度文库

3、深入理解SET NAMES和mysql(i)_set_charset的区别

转载于:https://www.cnblogs.com/cswcwj/p/4769064.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值