微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php中iconv函数报错怎么办

方法: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函数PHP5中内置,GB字符集认打开。

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] 举报,一经查实,本站将立刻删除。

相关推荐