//编码转换函数
function str_coder($str,$_type='chat' ){
if ( $_type == 'chat' )
{
$bian=@mb_detect_encoding($str,"EUC-CN,EUC-TW,GB2312,BIG5,UTF-8,SJIS,SHIFT-JIS,EUC-JP");
}elseif( $_type == 'mail' )
{
$bian=@mb_detect_encoding($str,"AUTO");
}
if( count(explode('BIG-5',$bian))>1 || $bian =='BIG-5' ){
$str= @mb_convert_encoding($str,"UTF-8","GBK,BIG-5,GB2312,UTF-8");
return $str;
}elseif(count(explode('SJIS',$bian))>1 || $bian=='SJIS'){
$str= @mb_convert_encoding($str,"UTF-8","UTF-8,SJIS");
return $str;
}elseif(count(explode('EUC-JP',$bian))>1 || $bian=='EUC-JP'){
$str= @mb_convert_encoding($str,"UTF-8","EUC-JP,GB2312,BIG5,UTF-8,EUC-JP");
return $str;
}elseif(count(explode('EUC-TW',$bian))>1 || $bian=='EUC-TW'){
$str= @mb_convert_encoding($str,"UTF-8","UTF-8,EUC-TW");
return $str;
}elseif(count(explode('EUC-CN',$bian))>1 || $bian=='EUC-CN'){
$str= @mb_convert_encoding($str,"UTF-8","GBK,EUC-CN,GB2312,BIG5,UTF-8");
return $str;
}elseif( count(explode('GBK',$bian))>1 || $bian=='UTF-8' ){
$str= @mb_convert_encoding($str,"UTF-8","UTF-8,GB2312,BIG5");
return $str;
}else{
return $str;
}
}
mb_convert_encoding这个函数是用来转换编码的。原来一直对程序编码这一概念不理解,不过现在好像有点开窍了。
用法:
php下使用iconv需要注意的问题 在使用这个函数进行字符串编码转换时,需要注意,如果将utf-8转换为gb2312时,可能会出现字符串被截断的情况发生。
在使用这个函数进行字符串编码转换时,需要注意,如果将utf-8转换为gb2312时,可能会出现字符串被截断的情况发生。 此时可以使用以下方法解决: //author:zhxia $str=iconv('utf-8',"gb2312//TRANSLIT",file_get_contents($filepath)); 即在第二个参数出添加红色字部分,表示:如果在目标编码中找不到与源编码相匹配的字符,会选择相似的字符进行转换。 此处也可以使用://IGNORE 这个参数,表示忽略不能转换的字符。 |