请问下面代码的每一句是什么意思呢?有点看不懂。。function charset_db(){
global $charset;
if($this->version = "4.1"){
return true;
}
//根据定义,指定不同的语言集
if(defined('CHARSET_DB') && CHARSET_DB == ' ' && in_array(strtolower($charset) , array('gb2312' , 'gbk' , 'big5' , 'utf-8'))){
$dbcharset = str_replace('-' , ' ' , $charset);
}else{
$dbcharset = CHARSET_DB;
}
if($dbcharset){
mysql_query("SET NAMES '$dbcharset' ");
}
}
global $charset;
if($this->version = "4.1"){
return true;
}
//根据定义,指定不同的语言集
if(defined('CHARSET_DB') && CHARSET_DB == ' ' && in_array(strtolower($charset) , array('gb2312' , 'gbk' , 'big5' , 'utf-8'))){
$dbcharset = str_replace('-' , ' ' , $charset);
}else{
$dbcharset = CHARSET_DB;
}
if($dbcharset){
mysql_query("SET NAMES '$dbcharset' ");
}
}
如果常数 CHARSET_DB 已定义,且值为 ' ',且 $charset 值为 gb2312,gbk,big5 utf-8 中的其中一个
就用 str_replace() 把 $charset 中 '-' 号转化成 ' ',赋值给$dbcharset
否则 把常数 CHARSET_DB 赋值给 $dbcharset
如果 $dbcharset 已赋值
通知数据库字符集为 $dbcharset(防止乱码)
楼主,1楼已经回答很具体了。你贴的这个函数代码功能主要就是检测脚本是否设置了新的语言编码($charset),如果有则将这个新的语言编码与预定的几个编码集比较('gb2312' , 'gbk' , 'big5' , 'utf-8'),如果存在于其中,则将数据库编码重置为新的语言编码($charset),不存在(不是上面几个中的其中一个)或是脚本没有设置新的语言编码,则不更改数据库编码。防止数据库数据和脚本字符编码环境不同造成乱码问题。