zl程序教程

您现在的位置是:首页 >  后端

当前栏目

php转换字符串编码iconv与mb_convert_encoding的区别说明

PHP转换编码 说明 字符串 区别 convert Encoding
2023-06-13 09:14:31 时间
iconv—Convertstringtorequestedcharacterencoding(PHP4>=4.0.5,PHP5)
mb_convert_encoding—Convertcharacterencoding(PHP4>=4.0.6,PHP5)

用法:
stringmb_convert_encoding(stringstr,stringto_encoding[,mixedfrom_encoding])
需要先启用mbstring扩展库,在php.ini里将;extension=php_mbstring.dll前面的;去掉


stringiconv(stringin_charset,stringout_charset,stringstr)
注意:
第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT和//IGNORE,
其中:
//TRANSLIT会自动将不能直接转化的字符变成一个或多个近似的字符,
//IGNORE会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。
ReturnstheconvertedstringorFALSEonfailure.

使用:
1.发现iconv在转换字符"-"到gb2312时会出错,如果没有ignore参数,所有该字符后面的字符串都无法被保存。不管怎么样,这

个"-"都无法转换成功,无法输出。另外mb_convert_encoding没有这个bug.
2.mb_convert_encoding可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多;如:$str=

mb_convert_encoding($str,"euc-jp","ASCII,JIS,EUC-JP,SJIS,UTF-8");“ASCII,JIS,EUC-JP,SJIS,UTF-8”的顺序不同效果也有

差异
3.一般情况下用iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding函数

.
from_encodingisspecifiedbycharactercodenamebeforeconversion.itcanbearrayorstring-commaseparated

enumeratedlist.Ifitisnotspecified,theinternalencodingwillbeused.

$str=mb_convert_encoding($str,"UCS-2LE","JIS,eucjp-win,sjis-win");

$str=mb_convert_encoding($str,"EUC-JP","auto");

例子:
$content=iconv("GBK","UTF-8",$content);
$content=mb_convert_encoding($content,"UTF-8","GBK");