今天边肖给大家分享一个关于PHP iconv()函数的字符编码转换的讲解。边肖觉得内容挺好的,现在分享给大家,很有参考价值。有需要的朋友就跟着边肖去看看吧。
php中的Iconv函数库可以完成各种字符集之间的转换,是php编程中不可或缺的基础函数库。但有时iconv会无缘无故少转码一些数据。例如,将字符“—”转换为gb2312时会出现错误。
我们来看看这个函数的用法。
最简单的应用,把gb2312置换成utf-8:
$text=iconv('GB2312 ',' UTF-8 ',$ text);
在使用$ text=iconv ('UTF-8 ',' GB 2312 ',$ text)的过程中,如果遇到一些特殊字符,比如'-','.'英文名称等。转换将被中断。这些字符之后的文本无法再转换。
要解决这个问题,可以使用下面的代码:
$text=iconv('UTF-8 ',' GBK ',$ text);
你没有看错。就这么简单。不要用gb2312,写成GBK,就可以了。
还有另一种方法,即第二个参数加上//IGNORE来忽略错误,如下所示:
iconv('UTF-8 ',' GB 2312//忽略',$ data);
这两种方法没有具体的比较。我觉得第一种方法(GBK代替gb2312)更好。
php手册中iconv() 说明:
iconv
(PHP 4=4.0.5,PHP 5)
iconv将字符串转换为请求的字符编码
描述
string iconv(字符串输入字符集,字符串输出字符集,字符串字符串)
对字符串str执行从in_charset到out_charset的字符集转换。如果失败,返回转换后的字符串或FALSE。
如果将字符串//TRANSLIT附加到out_charset,音译将被激活。这意味着当一个字符不能用目标字符集表示时,可以用一个或几个相似的字符来近似表示。如果您附加了字符串//IGNORE,则无法在目标字符集内表示的字符将被自动丢弃。否则,str将从第一个非法字符开始被删除。
使用此函数进行字符串编码转换时,需要注意的是,如果utf-8转换为gb2312,字符串可能会被截断。此时,可以使用以下方法:
$str=iconv('utf-8 ',' gb2312//TRANSLIT ',file _ get _ contents($ file path));
也就是说,第二个参数中增加了红字部分,这意味着如果在目标代码中找不到与源代码匹配的字符,将选择相似的字符进行转换。也可以在这里使用参数://IGNORE,意思是忽略不能转换的字符。
忽略意味着忽略转换中的错误。如果没有ignore参数,则不能保存该字符之后的所有字符串。
Iconv不是php的默认功能,也是默认安装的模块。需要安装后才能使用。
如果是windows2000 php,可以修改php.ini文件,把';'在扩展名=PHP _ iconv.dll之前。同时,您应该将iconv.dll从您的原始php安装文件复制到您的winnt/system32(如果您的dll指向此目录)。在linux环境下,静态安装,配置时多加一项-iconv,phpinfo可以看到iconv项。(Linux7.3 Apache4.06 php4.3.2).
mb_convert_encoding与iconv函数介绍
这个函数用来转换编码。我一直不明白程序编码的概念,现在好像开始明白了。但是英文一般不存在编码问题,只有中文数据才会有这个问题。比如你用Zend Studio或者Editplus写程序,用的是gbk代码。如果数据需要录入数据库,而数据库的编码是utf8,那么数据就会被编码转换,否则在录入数据库的时候就会变成乱码。
做一个GBK To UTF-8:
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
header(' content-Type:text/html;charset=Utf-8 ');
MB _ Convert _ Encoding('你是我的朋友',' UTF-8 ',' GBK ');
?
再来个GB2312 To Big5:
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
header(' content-Type:text/html;charset=big 5 ');
MB _ Convert _ Encoding('你是我的朋友',' big5 ',' GB 2312 ');
?
不过要使用上面的函数,需要安装,但是需要先用enable mbstring扩展库。
Mb _ convert _ encoding (stringstr,stringto _ encoding [,mixed from _ encoding])需要先启用mbstring扩展库,放在php.ini中;Extension=在前面extension=php _ mbstring.dll去掉mb_convert_encoding可以指定多种输入编码,会根据内容自动识别,但是执行效率比iconv差很多;
StringIconV (StringIn _ charset,StringOut _ charset,StringSTR)注意:第二个参数除了指定要转换到的代码外,还可以加上两个后缀://TRANSLIT和//IGNORE。其中//TRANSLIT会自动将不能直接转换的字符更改为一个或多个相似字符,//IGNORE会忽略不能转换的字符,默认效果是从第一个非法字符开始截断。
一般使用iconv,mb_convert_encoding函数只在无法确定原始编码是什么,或者转换后iconv无法正常显示的情况下使用。
$content=iconv('GBK ',' UTF-8 ',$ content);
$ content=MB _ convert _ encoding($ content,“UTF-8”
总结
这就是本文的全部内容。希望这篇文章的内容对你的学习或工作有一定的参考价值。谢谢你的支持。如果你想了解更多,请查看下面的相关链接。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。