方法:1、在函数的第二个参数后添加“//IGnorE”,语法为“iconv(UTF-8,GB2312//IGnorE,..)”;2、将gb2312置换成“utf-8”,语法为“iconv(GB2312,UTF-8,..)”。
本文操作环境:Windows10系统、PHP7.1版、Dell G3电脑
PHP中iconv函数报错怎么办
iconv()介绍
iconv函数可以将一种已知的字符集文件转换成另一种已知的字符集文件。例如:从GB2312转换为UTF-8。
iconv()错误
iconv在转换字符”—”到gb2312时会出错,解决方法是在需要转成的编码后加 “//IGnorE”,也就是iconv函数第二个参数后。如下:
iconv(UTF-8, GB2312//IGnorE, $data)
ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符串都无法被保存。
在PHP中iconv函数库能够完成各种字符集间的转换,是PHP编程中不可缺少的基础函数库;但有时候iconv对于部分数据转码会无缘无故的少一些。比如在转换字符—或者繁体到gb2312时会出错。
最简单的应用,把gb2312置换成utf-8:
`$text``=iconv(``GB2312``,``UTF-8``,``$text``);`
在用$text=iconv(UTF-8,GB2312,$text)过程中,如果遇到一些特别字符时,如:—或者繁体,英文名中的.等等字符,转换就断掉了。这些字符后的文字都没法继续转换了。
针对这的问题,可以用如下代码实现:
`$text``=iconv(``UTF-8``,``GBK``,``$text``);`
你没有看错,就这么简单,不使用gb2312,而写成GBK,就可以了。
还有一种方法,第二个参数,加上//IGnorE,忽略错误,如下:
`iconv(``UTF-8``,``GB2312//IGnorE``,``$data``);`
没有具体比较这两种方法,感觉第一种(GBK代替gb2312)方法更好。
示例如下:
<?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'); //得到设定编码的字符串长度 ?>
推荐学习:《PHP教程》
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。