iconv函数的一个bug。iconv在转换字符”—”到gb2312时会出错
解决方法很简单,就是在需要转成的编码后加 “//ignore” 也就是iconv函数第二个参数后.
如下:
以下为引用的内容:
代码如下 复制代码
iconv(“utf-8″,”gb2312//ignore”,$data)
ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符串都无法被保存。
这个iconv()这个函数,在php5中是内置的.
列子
代码如下 复制代码
但是使用iconv函数可能会碰到如notice: iconv() [function.iconv]: detected an illegal character in input string ...错误了,
原因是因为这个编码范围的问题,gb2312小于gbk小于uft8哦,所以大家转换时要注意了,不过我们php还提供了一个函数mb_detect_encoding他可以比较好的解决这个问题了。
现在把它写成更专业的函数
代码如下 复制代码
$val) {
$data[$key] = phpcharset($val, $to);
}
} else {
$encode_array = array('ascii', 'utf-8', 'gbk', 'gb2312', 'big5');
$encoded = mb_detect_encoding($data, $encode_array);
$to = strtoupper($to);
if($encoded != $to) {
$data = mb_convert_encoding($data, $to, $encoded);
}
}
return $data;
}
?>
有时我们不知道字符的编码这时会需要先检测出编码再进行转换。
代码如下 复制代码
function asciitog($brand)
{
$cha=mb_detect_encoding($brand);
if($cha=='utf-8')
{
$brand2 = iconv($cha,gb2312,$brand);
}
$cha2=mb_detect_encoding($brand2);
if($cha2!='ascii'){
$brand=$brand2;
}
return $brand;
}
http://www.bkjia.com/phpjc/632143.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/632143.htmltecharticle我们经常会要碰到把uft-8字符转换在gbk或gb2312编码,但在使用过程中转换经常会碰到一些问题,下面我来介绍利用php自带的字符串转换函数来...
