首页 >后端开发 >php教程 >有关php iconv函数的用法详解

有关php iconv函数的用法详解

WBOY
WBOY原创
2016-07-25 08:58:581260浏览
  1. extension_dir = "C:/ipaddr/php/extensions/"
复制代码

(注意,建议写全地址,并且后面加上/,很多时候是因为这里设置不对,才导致无法加载其它模块的dll的) 再打开:

  1. extension=php_gd2.dll
复制代码

但如果是安装iconv.dll,按上面方法,打开php_iconv.dll后,还是无法开启iconv模块,需要如下配置: a.上iconv的官方下载站点 http://ftp.gnu.org/pub/gnu/libiconv/ 下面Windows版的iconv文件:libiconv-1.9.1.bin.woe32.zip 将文件解压,将bin/下面的charset.dll,iconv.dll,iconv.exe拷贝到c:/windows/ (或其它的系统PATH中) (这步是必须的,php_iconv.dll也是调用GNU的iconv库的,所以,先要安装GNU的iconv库)

b.开启php.ini里面的php_iconv.dll

c.重启Apache,再在phpinfo();检测是否开启iconv。

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

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

  1. iconv("UTF-8","GB2312//IGNORE",$data)
复制代码

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

这个iconv()这个函数,在php5中是内置的。 来看一个完整的例子,如下:

  1. //iconv用法举例

  2. //by bbs.it-home.org
  3. echo $str= '你好,这里是卖咖啡!';
  4. echo '
    ';
  5. echo iconv('GB2312', 'UTF-8', $str); //将字符串的编码从GB2312转到UTF-8

  6. echo '
    ';
  7. echo iconv_substr($str, 1, 1, 'UTF-8'); //按字符个数截取而非字节

  8. print_r(iconv_get_encoding()); //得到当前页面编码信息
  9. echo iconv_strlen($str, 'UTF-8'); //得到设定编码的字符串长度

  10. //也可以这样

  11. $content = iconv("UTF-8","gbk//TRANSLIT",$content);
  12. ?>
复制代码


声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn