php从表单中插入到数据库的内容在数据库显示为乱码但是将
classMysql{private$host;private$uname;private$pwd;private$dbname;private$ecoding;publ...
class Mysql
{
private $host;
private $uname;
private $pwd;
private $dbname;
private $ecoding;
public function __construct($host="localhost",$uanme="root",$pwd="123456",$dbname="Staticize",$ecoding="utf8")
{
$this->host = $host;
$this->uname = $uanme;
$this->pwd = $pwd;
$this->dbname = $dbname;
$this->ecoding = $ecoding;
$conn = @mysql_connect($this->host,$this->uname,$this->pwd) or die("连接数据库异常");
@mysql_select_db($this->dbname) or die("选择数据库异常");
mysql_query("set names" . '$this->ecoding');
}
但是将mysql_query("set names" . '$this->ecoding');改成mysql_query("set names utf8" );就可以了。为什么呢 展开
{
private $host;
private $uname;
private $pwd;
private $dbname;
private $ecoding;
public function __construct($host="localhost",$uanme="root",$pwd="123456",$dbname="Staticize",$ecoding="utf8")
{
$this->host = $host;
$this->uname = $uanme;
$this->pwd = $pwd;
$this->dbname = $dbname;
$this->ecoding = $ecoding;
$conn = @mysql_connect($this->host,$this->uname,$this->pwd) or die("连接数据库异常");
@mysql_select_db($this->dbname) or die("选择数据库异常");
mysql_query("set names" . '$this->ecoding');
}
但是将mysql_query("set names" . '$this->ecoding');改成mysql_query("set names utf8" );就可以了。为什么呢 展开
3个回答
展开全部
单双引号的问题
将 '$this->ecoding' 改成 "$this->ecoding" 就可以了。在php中,单引号中的内容不会被转义,也就是说 ‘$this->ecoding' 只是字符串$this->ecoding,并不是变量; 双引号中的变量会被转义。
将 '$this->ecoding' 改成 "$this->ecoding" 就可以了。在php中,单引号中的内容不会被转义,也就是说 ‘$this->ecoding' 只是字符串$this->ecoding,并不是变量; 双引号中的变量会被转义。
追问
这样的话,插入到数据是乱码,查询到前台是正常的,为什么
追答
这是因为你的数据库内部编码与你使用PHP操作数据库的编码不统一造成的。
mysql_query("set names utf8" ),这一句是说,你将内容写入或者读出数据库的时候将内容用uft8编码进行存储,但数据库有自己的存储编码。例如你的数据库的编码是latin1,你将一个字符是通过utf8写进去的,在数据库中查看的时候,是通过latin1码查看的,当然是乱码了。但是当你查询读出到前台时,用的又是utf8编码,所以又正常了。有点负负得正的意思。
建议你把编码统一下,用show variables like '%char%' 查看你的数据库编码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
↓ ↓去掉这两个单引号
mysql_query("set names" . '$this->ecoding');
↑这里少了个空格哦
PHP 原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。
PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。
PHP 是免费的,并且使用广泛。对于像微软 ASP 这样的竞争者来说,PHP 无疑是另一种高效率的选项。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是因为你的数据库建立的时候选择的是UTF8编码!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询