e***y 发帖数: 1152 | 1 $str 是一个长度未知、混合含有gb2312和big5的字串,可否通过iconv()转换为一致编码的字串,
要么gb2312,要么big5
例如:$str='简体繁體' | m*****k 发帖数: 1864 | 2 我怀疑是不行。iconv怎么能知道哪个是繁体哪个是简体。
不过,并不是繁体字就一定是big5啊? | e***y 发帖数: 1152 | 3 有道理。我碰到的问题是这样:我在学习DOMDocument抓网页,碰到一些中文网站混合
了简繁体时经常出现问题,如下例:
$raw = file_get_contents('http://bbs.wenxuecity.com/ktv');
$html = new DOMDocument();
$html->loadHtml( $raw );
echo $html->saveHTML();
?>
网页抓不全,报错
input conversion failed due to input error, bytes 0x8F ...
检查之后经常发现是因为网页中某处含有非法字符(繁体也会)。如果在loadHtml之前
,插入:
$str = iconv('gb2312', 'gb2312//IGNORE', $raw);
网页通常可以抓下来,但是所有繁体字符被silently drop.
这个问题有解吗?
网页可以代换为: http://bbs.wenxuecity.com/{ktv, music, cooking, etc} | m*****k 发帖数: 1864 | | e***y 发帖数: 1152 | 5 问题解决。原网页中有语句,在*创建DOM对象前*必须删除。 |
|