网络编程 
首页 > 网络编程 > 浏览文章

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

(编辑:jimmy 日期: 2024/11/21 浏览:3 次 )

本文实例讲述了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方法就可以了

<"color: #0000ff">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+Mysqli利用事务处理转账问题实例
下一篇:php发送与接收流文件的方法
高通与谷歌联手!首款骁龙PC优化Chrome浏览器发布
高通和谷歌日前宣布,推出首次面向搭载骁龙的Windows PC的优化版Chrome浏览器。
在对骁龙X Elite参考设计的初步测试中,全新的Chrome浏览器在Speedometer 2.1基准测试中实现了显著的性能提升。
预计在2024年年中之前,搭载骁龙X Elite计算平台的PC将面世。该浏览器的提前问世,有助于骁龙PC问世就获得满血表现。
谷歌高级副总裁Hiroshi Lockheimer表示,此次与高通的合作将有助于确保Chrome用户在当前ARM兼容的PC上获得最佳的浏览体验。