2011年07月15日 星期五 10:31
我想问一个关于编码的事,我用mb_detect_encoding检测编码,表单提交的数据的编码竟然有好多种,有ASCII的,CP936,EUC-CN,我编辑器是utf-8的,我现在想把这些转换成utf-8的,但是cp936转不过来,使用的mb_convert_encoding方法,听同事说mb_detect_encoding在检测编码时有bug,不知道是不是这方面的原因,没有去看底层的实现,很急,期待回答!!!!
2011年07月15日 星期五 11:00
数据入口函数:在类mod_topic_ask.class.php中
/**
* 入口处理数据函数
*/
public static function datafilter(Array $data)
{
if(is_array($data) && ! empty($data))
{
foreach($data as $index => $item)
{
if(is_null($item) || $item == null || $item == '')
{
$item = "''";
$data[$index] = $item;
}
if($item == 'yes' || $item == 'ok')
{
$item = 1;
$data[$index] = $item;
}
if($item == 'no')
{
$item = 0;
$data[$index] = $item;
}
if(is_numeric($item) && !ctype_digit($item))
{
throw new ex_applicationexception('输入的内容的数据类型不合法!请重新输入!');
}
if(is_numeric($item))
{
$oitem = intval($item);
if($oitem != $item)
{
$data[$index] = $item;
} else
{
$data[$index] = $oitem;
}
}
if(! is_numeric($item) && is_string($item))
{
$encodings = array("ASCII","CP936","GB2312","GBK","BIG5","EUC-CN");
$encoding = mb_detect_encoding($item,array("ASCII","GB2312","GBK","BIG5","EUC-CN","CP936"));
if(in_array($encoding, $encodings)){
mb_convert_encoding($item, 'utf-8',$encoding);
}
if($item == 'true')
{
$item = 1;
} else if($item == 'false')
{
$item = 0;
}
$data[$index] = $item;
}
if(is_bool($item))
{
$data[$index] == true ? 1 : 0;
}
}
} else
{
throw new Exception('提问内容不能为空^_^!');
}
return $data;
}
原因编码不一样:
$this->data['offertype'] 为cp936编码
页面编码:utf-8
但是这样:
$this->data = $this->ask->datafilter($data);
}
Zeuux © 2024
京ICP备05028076号