请问下面代码的每一句是什么意思呢?有点看不懂。。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' ");
}
}

解决方案 »

  1.   

    先获取全局变量 $charset ,应该是系统的字符集
    如果常数 CHARSET_DB 已定义,且值为 ' ',且 $charset 值为 gb2312,gbk,big5 utf-8 中的其中一个
    就用 str_replace() 把 $charset 中 '-' 号转化成 ' ',赋值给$dbcharset
    否则 把常数 CHARSET_DB 赋值给 $dbcharset
    如果 $dbcharset 已赋值
    通知数据库字符集为 $dbcharset(防止乱码)
      

  2.   


    楼主,1楼已经回答很具体了。你贴的这个函数代码功能主要就是检测脚本是否设置了新的语言编码($charset),如果有则将这个新的语言编码与预定的几个编码集比较('gb2312' , 'gbk' , 'big5' , 'utf-8'),如果存在于其中,则将数据库编码重置为新的语言编码($charset),不存在(不是上面几个中的其中一个)或是脚本没有设置新的语言编码,则不更改数据库编码。防止数据库数据和脚本字符编码环境不同造成乱码问题。
      

  3.   

    虽然我还是不太明白那几个变量($charset,CHARSET_DB,~~~)的用法,不过回答的很详细,谢谢