php iconv函数用法示例与注意事项

发布时间:2020-06-02编辑:脚本学堂
本文介绍了php中iconv函数的用法,以及iconv函数的注意事项,需要的朋友参考下。

php iconv函数用法

php编程中使用iconv函数把抓取来过的utf-8编码的页面转成gb2312,只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些。
这是iconv函数的一个bug。iconv在转换字符"—"到gb2312时会出错。  

解决方法:
在需要转成的编码后加 "//IGNORE"  也就是iconv函数第二个参数后.如下
 

iconv("UTF-8","GB2312//IGNORE",$data)

ignore忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符串都无法被保存。

完整代码:
 

复制代码 代码示例:
<?php  
echo $str= '你好,这里是卖咖啡!';  
echo '<br />';  
echo iconv('GB2312', 'UTF-8', $str); //将字符串的编码从GB2312转到UTF-8  
echo '<br />';  
echo iconv_substr($str, 1, 1, 'UTF-8'); //按字符个数截取而非字节  
print_r(iconv_get_encoding()); //得到当前页面编码信息  
echo iconv_strlen($str, 'UTF-8'); //得到设定编码的字符串长度  
//也有这样用的 www.jb200.com
$content = iconv("UTF-8","gbk//TRANSLIT",$content);  
?>  

php使用iconv函数注意事项

用iconv()转换一个输出字符编码不支持的字符时,如iconv('UTF-8', 'GB2312', '囧'),会遇到这样的错误提示:
Notice: iconv() [function.iconv]: Detected an illegal character in input string ...
因为GB2312表示的是简体中文,不支持像"囧"之类的更为复杂的汉字以及一些特殊字符,这当然会报错了。

解决办法有两种:
1、扩大输出字符编码的范围,如iconv('UTF-8', 'GBK', '囧'),则可以正确地输出,因为GBK支持的字符范围更广;
2、在输出的字符编码字符串后面加上"//IGNORE",如iconv('UTF-8', 'GB2312//IGNORE', '囧'),忽略了不能转换的字符,避免了出错但却不能够正确地输出(即空白不、输出)。