PHP的中文使用iconv截断问题的解
本文讲述PHP使用iconv中国截断解。分享给你供你参考。具体分析如下:今天,我们做了一个收集程序。原理很简单。我们使用旋度方法获取对方页面的HTML分析,然后定期提取所需的数据并保存到数据库中。
因为其他的网页是GB2312编码,和局部使用UTF-8编码,编码转换后需要收集。
iconv方法用于编码转换
iconv字符串所需的字符编码转换
字符串(字符串的字符串in_charset iconv,out_charset美元,字符串str)
字符串str是从编码到out_charset in_charset。
转换的方法很简单,并且可以直接使用iconv的方法
< PHP
$content = iconv('gb2312 ','utf-8,$content); / / $内容是采集的内容
>
几个页面已经测试过,可以正常收集,但在以后的收集中,有几页是不完整的。
首先考虑是否有规律的错误,检查出问题后检查。通过调查,发现iconv转码的含量小于集合的内容。
看看Apache日志,看到提示:注意:iconv():检测到输入字符串非法字符。
打开说明书,看下面的说明
如果你加入 / /直译out_charset字符串,将使传递函数(音译)。这意味着,当一个角色不能由一个目标字符集的形式,它可以由一个或多个字符的字符近似。
如果你添加一个字符串 / /忽略,人物无法在目标字符集表示将被丢弃。否则,乙方开始截断从第一个无效字符,使e_notice。
原来的iconv遇到无法识别的内容,它开始被截断从第一识别的特征和产生的e_notice.so后面的内容被丢弃。
在输出字符集后添加忽略只会丢弃无法识别的内容,并且不会截断和丢弃它后面的内容。
节目改版后一切正常。
< PHP
$content = iconv('gb2312 ','utf-8 / /忽略,$content); / / $内容是采集的内容
>
提示:使用iconv的时候,如果你想使用UTF-8编码,使用UTF-8而不是使用UTF8,因为UTF8一些服务器的问题。
希望本文能对大家的PHP程序设计有所帮助。