php转化编码函数iconv与mb_convert_encoding
一、作用
可以在有需要的使用场合(如:解决在GB2312编码环境下使用Ajax产生的中文字乱码的问题)方便进行编码转换,以解决网页乱码的问题。
二、iconv
使用举例(注:将以下代码保存为一个utf-8编码格式文件再测试,才能看出效果)
1 <?php 2 header("Content-type: text/css; charset=gb2312"); 3 echo $str="技术导航者-www.55nav.com";//这一行显示为乱码 4 echo "<hr>"; 5 echo iconv("utf-8", "gb2312", $str);//这是把utf-8转换为gb2312,显示正常 6 ?>
(测试gb2312转换为utf-8方法同理。)
注意:发现iconv在转换字符”—”(中文的破折号)到gb2312时会出错,这个”—”及以后的字符都无法转换成功,无法输出。另外mb_convert_encoding没有这个bug。
三、mb_convert_encoding
使用举例(注:将以下代码保存为一个utf-8编码格式文件再测试,才能看出效果)
1 <?php 2 header("Content-type: text/css; charset=gb2312"); 3 echo $str="技术导航者-www.55nav.com";//这一行显示为乱码 4 echo "<hr>"; 5 echo mb_convert_encoding($str,'gb2312', "utf-8" );//这是把utf-8转换为gb2312,显示正常 6 ?>
(测试gb2312转换为utf-8方法同理。)
注意:此函数的执行效率比iconv差。
如果没有没有开启php的mbstring扩展,则需要做如下设置,让php支持该扩展:
1、windows 服务器环境
编辑 php.ini 文件,将; extension=php_mbstring.dll 前面的 ; 去掉,重启网页服务器。
2、Linux服务器环境
在编译配置时加入 –enable-mbstring=cn 编译参数,再进行PHP的编译安装。