我对 PHP、CURL 和 UT-8 希腊字符有疑问。
我尝试从网站(特别是博客)中检索一些文本,但是当我阅读检索到的文本时,它已损坏。它显示类似Î ÏκοÏÏÏ ÏÎ¿Ï ÏÏÏÏον。另一方面,英文字符显示得很好。
该网站的字符集是“UTF-8”,我的脚本中的字符集也是如此。
我对 CURL 使用以下设置。
$ch = curl_init();
$useragent='Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20120716 Firefox/15.0a2';
$header = array('Accept-Charset: UTF-8');
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 2);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
我使用 Xpath 查询$res=$xp->query("...")
来查找文本的位置。
然后我采取这样的文字:
foreach($res as $text_result)
$texter=trim($text_result->nodeValue);
我检查了返回的文本字符集mb_detect_encoding
及其正确的“UTF-8”。
该脚本在大多数网站上都能正常运行,但在其中两个网站上却失败了。
我无法弄清楚问题可能是什么。
有人有想法吗?
谢谢大家。
更新
我通过添加以下内容修复了错误:
$doc->loadHTML('<?xml encoding="UTF-8">' . $html);
但是现在,当我将文本插入数据库时,它们仍然损坏。在我的电脑(easyphp)中也可以正常工作。
我在 000webhost 拥有一个免费主机。