php使用iconv中文截断问题的解决方法

 更新时间:2015年02月11日 12:22:45   作者:傲雪星枫  
这篇文章主要介绍了php使用iconv中文截断问题的解决方法,以实例形式较为详细的分析了出现中文截断问题的原因与具体解决方法,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了php使用iconv中文截断问题的解决方法。分享给大家供大家参考。具体分析如下:

今天做了一个采集程序,原理很简单,使用curl方法把对方页面的html获取分析,然后正则提取需要的数据并保存在数据库。

由于对方页面是GB2312编码,而本地使用的是UTF-8编码。因此在采集后需要进行编码转换。

使用了iconv方法进行编码转换

iconv — 字符串按要求的字符编码来转换 
string iconv ( string $in_charset , string $out_charset , string $str )

将字符串 str 从 in_charset 转换编码到 out_charset 。  

转换的方法很简单,直接使用iconv方法就可以了

<?php 
$content = iconv('GB2312', 'UTF-8', $content); //$content为采集到的内容 
?> 

试验了几个页面,都能正常采集。但在之后的采集中,有几个页面采集不完整。
一开始考虑是否正则有错,检查后排除此问题。经过排查,发现经过iconv转码后的内容比采集的内容少了一大段。
查看apache log,看到提示:Notice: iconv(): Detected an illegal character in input string。

翻查手册,看到以下说明

如果你在 out_charset 后添加了字符串 //TRANSLIT,将启用转写(transliteration)功能。这个意思是,当一个字符不能被目标字符集所表示时,它可以通过一个或多个形似的字符来近似表达。

如果你添加了字符串 //IGNORE,不能以目标字符集表达的字符将被默默丢弃。 否则, str 从第一个无效字符开始截断并导致一个 E_NOTICE 。

原来iconv遇到不能识别的内容,会从第一个不能识别的字符开始截断,并生成一个E_NOTICE。因此后边的内容被丢弃了。

而在输出字符集后加上//IGNORE则只丢弃不能识别的内容,而不会截断和丢弃后面的内容。

修改程序后一切正常

<?php 
$content = iconv('GB2312','UTF-8//IGNORE',$content);//$content为采集到的内容
?> 

Tips:使用iconv时,如果要使用UTF-8编码的,请使用UTF-8而不要使用UTF8,因为UTF8有些服务器会有问题。

希望本文所述对大家的php程序设计有所帮助。

相关文章

  • php给图片加文字水印

    php给图片加文字水印

    本文给大家分享的是使用php实现的给图片加水印的方法,十分的细致全面,有需要的小伙伴可以参考下。
    2015-07-07
  • php把数组值转换成键的方法

    php把数组值转换成键的方法

    这篇文章主要介绍了php把数组值转换成键的方法,涉及php针对数组遍历与转换的相关操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • PHP文件上传功能实现逻辑分析

    PHP文件上传功能实现逻辑分析

    文件上传是开发中常见的一个功能,下面这篇文章主要给大家介绍了关于PHP文件上传实现逻辑分析,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)

    PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)

    根据 Mysql里的字段自动生成类文件的实现代码,学习php的朋友可以参考下。
    2011-07-07
  • PHP-Fcgi下PHP的执行时间设置方法

    PHP-Fcgi下PHP的执行时间设置方法

    昨天,一个程序需要导出500条数据,结果发现到150条是,Nginx报出504 Gateway Timeout错误,原来PHP-Fcgi下的设置执行时间与isapi的不同
    2013-08-08
  • PHP学习笔记(三):数据类型转换与常量介绍

    PHP学习笔记(三):数据类型转换与常量介绍

    这篇文章主要介绍了PHP学习笔记(三):数据类型转换与常量介绍,本文讲解了PHP数据类型相互转换、常量的声明与使用等内容,需要的朋友可以参考下
    2015-04-04
  • php实现简单四则运算器

    php实现简单四则运算器

    这篇文章主要为大家详细介绍了php实现简单四则运算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • php技巧小结【推荐】

    php技巧小结【推荐】

    本文主要分享了分享php工作中遇到的一些探究和技巧,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • JS 网站性能优化笔记

    JS 网站性能优化笔记

    JS 网站性能优化笔记,使用下面的方法有利于提高代码的执行效率。
    2011-05-05
  • php分页函数完整实例代码

    php分页函数完整实例代码

    这篇文章主要介绍了php分页函数完整实例代码,采用较为详尽的注释说明了PHP分页的方法及原理,需要的朋友可以参考下
    2014-09-09

最新评论