php连MySQL数据库编码问题
我的数据库类型为gbk。下面是连接数据库的php代码,现在读取和写入数据库都有乱码。请教怎么改成支持gbk。classMyDB{var$conn;functionMyDB...
我的数据库类型为gbk。
下面是连接数据库的php代码,现在读取和写入数据库都有乱码。
请教怎么改成支持gbk。
class MyDB{
var $conn;
function MyDB(){}
function connect($host,$username,$pwd,$port="3306"){
if(!$port)$port=3306;
$this->conn=mysql_connect("$host:$port",$username,$pwd);
return $this->conn;
}
function close(){
mysql_close($this->conn);
}
function query($sql){
$ResultSet=mysql_query($sql,$this->conn) or die($sql.mysql_error());
return $ResultSet;
}
function fetch_array($ResultSet){
return mysql_fetch_array($ResultSet);
}
function fetch_row($ResultSet){
return mysql_fetch_row($ResultSet);
}
function fetch_object($ResultSet){
return mysql_fetch_object($ResultSet);
}
function insert_id(){
return mysql_insert_id($this->conn);
}
function affected_rows(){
return mysql_affected_rows($this->conn);
}
function fetch_field($ResultSet,$index=""){
if($index=="")return mysql_fetch_field($ResultSet);
else return mysql_fetch_field($ResultSet,$index);
}
function result($ResultSet,$rowIndex,$columnIndex){
return mysql_result($ResultSet,$rowIndex,$columnIndex);
}
function num_rows($ResultSet){
return mysql_num_rows($ResultSet);
}
function num_fields($ResultSet){
return mysql_num_fields($ResultSet);
}
function select_db($db_name){
return mysql_select_db($db_name,$this->conn);
}
function list_tables($db_name){
return mysql_list_tables($db_name);
}
function tablename($ResultSet,$index){
return mysql_tablename ($ResultSet,$index);
}
function list_dbs(){
return mysql_list_dbs($this->conn);
}
function getdata($sql){
$rs = $this->query($sql);
return $this->fetch_array($rs);
}
function getdataobj($sql){
$rs = $this->query($sql);
return $this->fetch_object($rs);
}
} 展开
下面是连接数据库的php代码,现在读取和写入数据库都有乱码。
请教怎么改成支持gbk。
class MyDB{
var $conn;
function MyDB(){}
function connect($host,$username,$pwd,$port="3306"){
if(!$port)$port=3306;
$this->conn=mysql_connect("$host:$port",$username,$pwd);
return $this->conn;
}
function close(){
mysql_close($this->conn);
}
function query($sql){
$ResultSet=mysql_query($sql,$this->conn) or die($sql.mysql_error());
return $ResultSet;
}
function fetch_array($ResultSet){
return mysql_fetch_array($ResultSet);
}
function fetch_row($ResultSet){
return mysql_fetch_row($ResultSet);
}
function fetch_object($ResultSet){
return mysql_fetch_object($ResultSet);
}
function insert_id(){
return mysql_insert_id($this->conn);
}
function affected_rows(){
return mysql_affected_rows($this->conn);
}
function fetch_field($ResultSet,$index=""){
if($index=="")return mysql_fetch_field($ResultSet);
else return mysql_fetch_field($ResultSet,$index);
}
function result($ResultSet,$rowIndex,$columnIndex){
return mysql_result($ResultSet,$rowIndex,$columnIndex);
}
function num_rows($ResultSet){
return mysql_num_rows($ResultSet);
}
function num_fields($ResultSet){
return mysql_num_fields($ResultSet);
}
function select_db($db_name){
return mysql_select_db($db_name,$this->conn);
}
function list_tables($db_name){
return mysql_list_tables($db_name);
}
function tablename($ResultSet,$index){
return mysql_tablename ($ResultSet,$index);
}
function list_dbs(){
return mysql_list_dbs($this->conn);
}
function getdata($sql){
$rs = $this->query($sql);
return $this->fetch_array($rs);
}
function getdataobj($sql){
$rs = $this->query($sql);
return $this->fetch_object($rs);
}
} 展开
展开全部
'DB_CHARSET'=>'UTF-8',// 数据库编码默认采用utf8
改为
'DB_CHARSET'=>'utf8',// 数据库编码默认采用utf8
PHP的数据库编码是utf8
改为
'DB_CHARSET'=>'utf8',// 数据库编码默认采用utf8
PHP的数据库编码是utf8
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以使用 mysql_query("set names 'utf8'"); 语句来设置要使用的数据编码,它的意思是数据使用utf8编码;
语法说明如下:
SET NAMES 'charset_name'
SET NAMES显示客户端发送的SQL语句中使用什么字符集。
charset_name 要使用的字符集
例如:
$con = mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD) or die('can not connect server!'); //连接数据库
mysql_select_db(DB_DATABASE); //选择数据库
mysql_query("set names 'utf8'"); //设置要使用的字符集
语法说明如下:
SET NAMES 'charset_name'
SET NAMES显示客户端发送的SQL语句中使用什么字符集。
charset_name 要使用的字符集
例如:
$con = mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD) or die('can not connect server!'); //连接数据库
mysql_select_db(DB_DATABASE); //选择数据库
mysql_query("set names 'utf8'"); //设置要使用的字符集
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该不是数据库连接的问题.
在你的程序中头上加载这么一句:
header("Content-type: text/html; charset=GB2312");
一般会解决此问题.
在你的程序中头上加载这么一句:
header("Content-type: text/html; charset=GB2312");
一般会解决此问题.
追问
加上去没用哦。
http://bbs.php100.com/read-htm-tid-90559.html
详细的问题在这里。
追答
1,用Navicat 等MYSQL数据库连接工具手工查阅一下数据库内容是否是乱码(注意数据库连接时选择你认为的正确的编码格式).如果以gbk连接查询出来的结果能够正常显示,那说明数据库中的编码没有问题.
第2步,你写一个简单的php读取数据库的语句,然后用die(print_r($rs,true));看看读出来的记录集数据是否正确,如果不正确,如果从IE中切换编码格式是否会显示正确(鼠标右键,更换编码).一般这地方能过更换编码就会正确显示,然后在你的数据库连接类里面更改你的编码类型为你刚才选择的编码类型,并在在你的页面输出前加上header("Content-type: text/html; charset=编码类型");一般会解决问题.
如果还是解决不了,请注意网页中是否有Meta content-type 为utf8之类的定义,这可能导致你编码不统一.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
function connect($host,$username,$pwd,$port="3306"){
if(!$port)$port=3306;
$this->conn=mysql_connect("$host:$port",$username,$pwd);
mysql_query("SET NAMES 'GBK'");
return $this->conn;
}
试试这样行不行
if(!$port)$port=3306;
$this->conn=mysql_connect("$host:$port",$username,$pwd);
mysql_query("SET NAMES 'GBK'");
return $this->conn;
}
试试这样行不行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询