2022-12-11 17:18来源:m.sf1369.com作者:宇宇
最简单的:
$str = iconv(gbk, utf-8//ignore, $str);
或者:
$str = mb_convert_encoding($str, utf-8, gbk);
稍微解释一下 //ignore 的意思是转换不了的字符就忽略。建议把这个写上。否则遇到转换不了的字符会报错。gbk替换成你需要转换的编码就可以了。
试一试这个函数:
//function :截取中文字符
function zh_substr($string, $start, $length)
{
if(strlen($string)>$length){
$str=null;
$len=$start+$length;
for($i=$start;$i<$len;$i++){
if(ord(substr($string,$i,1))>0xa0){
//ord()函数返回字符的 ASCII (美国国家标准交换码) 序数值。本函数和 chr() 函数相反。
$str.=substr($string,$i,2);
$i++;
}else{
$str.=substr($string,$i,1);
}
}
return $str.'...';
}else{
return $string;
}
}
gb2312转成utf-8 是从小字符集转到大字符集,基本上不会出什么问题,
iconv('GB2312', 'UTF-8', $str);
或者
mb_convert_encoding($str, 'UTF-8', 'GB2312');