php iconv函数用法
在php编程中使用iconv函数把抓取来过的utf-8编码的页面转成gb2312,只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些。
这是iconv函数的一个bug。iconv在转换字符"—"到gb2312时会出错。
解决方法:
在需要转成的编码后加 "//IGNORE" 也就是iconv函数第二个参数后.如下
ignore忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符串都无法被保存。
完整代码:
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', '囧'),忽略了不能转换的字符,避免了出错但却不能够正确地输出(即空白不、输出)。