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的编译安装。

posted @ 2012-08-03 13:12  人生工程师  阅读(241)  评论(0编辑  收藏  举报