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);
}
}
展开
 我来答
gfmtd1
2011-07-13 · TA获得超过106个赞
知道小有建树答主
回答量:170
采纳率:100%
帮助的人:32.4万
展开全部

也许是数据库的问题,我也遇到过,我用的是wampserver,界面的工具,直接点鼠标就可能建成mysql数据库,建成后导入数据,查询数据库返回面而的是乱码,我遇到的情况是这样的:

1、建库用gbk,如图。

2、导入表及数据时,默认是utf,此处要改成gbk就不是乱码了,如第图底页面,如果是默认的或是其它的字符集,能导入成功但是乱码。另外直接把sql粘贴到sql窗口,也不是乱码。

希望能帮到你,呵呵~

hcqsuizyx
2011-07-13 · TA获得超过467个赞
知道答主
回答量:529
采纳率:0%
帮助的人:367万
展开全部
'DB_CHARSET'=>'UTF-8',// 数据库编码默认采用utf8
改为
'DB_CHARSET'=>'utf8',// 数据库编码默认采用utf8

PHP的数据库编码是utf8
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宇宙大师之一
2015-10-10 · TA获得超过3476个赞
知道小有建树答主
回答量:2271
采纳率:52%
帮助的人:710万
展开全部
可以使用 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'"); //设置要使用的字符集
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fququ
2011-07-12 · 超过38用户采纳过TA的回答
知道小有建树答主
回答量:71
采纳率:0%
帮助的人:76.1万
展开全部
应该不是数据库连接的问题.
在你的程序中头上加载这么一句:
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之类的定义,这可能导致你编码不统一.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ropue2000
2011-07-13 · TA获得超过982个赞
知道小有建树答主
回答量:874
采纳率:0%
帮助的人:563万
展开全部
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;
}
试试这样行不行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式