PHP crawler - 具有不同编码的站点的问题

时间:2010-12-24 02:30:09

标签: php encoding utf-8 web-crawler multilingual

我正在构建关键字密度分析器。我已经构建了关键字分析器,它对于具有英文内容和UTF-8编码的网站非常有用。当我抓取像myegy.com这样的网站时,阿拉伯语关键字在我的网站中显示为问号。我尝试过iconv和mb_convert_strings,它们都正在工作。

我需要帮助创建一个关键字密度程序,它能够抓取所有语言和编码,并使用utf-8编码将它们存储在数据库中并显示回来...

我是编码的新手,所以非常感谢你的帮助......

在我的页面上显示为 和iconv - > ÈÌæÏÉ。它应该以阿拉伯语显示,但我无法显示,因为阿拉伯语显示为问号。

1 个答案:

答案 0 :(得分:0)

myegy.com使用windows-1256编码。 Iconv支持它。只要您找到声明并正确使用iconv,它就可以正常工作。

在抓取网页时,你会发现很多不同的编码,其中一些会被错误地命名,有些会被伪造。很多页面都缺少编码声明,并依赖浏览器猜测编码。

如果您想尽可能支持所有编码,则需要实现HTML5编码检测算法:

http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#determining-the-character-encoding

另请注意,PHP的内置DOMDocument::loadHTML()支持非常少的编码。您必须先将文档(及其中的编码声明)转换为UTF-8。