如何高效、准确、自动识别网页编码


我知道的有两种途径获取网页的编码信息:
其一、通过服务器返回的header里的charset变量获取
其二、通过页面里的meta 信息获取

正常情况下,如果服务器或者页面有提供这两个参数,而且参数是正确的。

但是现实抓取网页时,经常会出现以下几种情况:
1.这两个参数缺失了
2.这两个参数虽然都提供了,但是不一致
3.这两个参数提供了,但是与网页实际的编码不一致

我现在通过php里面有个mb_detect函数,貌似识别字符串编码,但他的准确率就不好说了,因为编码的自动识别是一个概率事件,只有当被识别的字符串的长度足够大( 比如超过300个字)时,才能比较可靠。

除了这个之外,还有其它方式可以实现吗?

php JavaScript http协议

iRoy930 12 years, 2 months ago

使用由mozzila提供的universalchardet模块,据说比IE自带的识别模块准确率高很多。

universalchardet项目的地址在: http://www-archive.mozilla.org/projects/intl/chardet.html

目前universalchardet支持python java dotnet等
C#版本:
http://code.google.com/p/nuniversalchardet/

具体参考这篇文章:
http://www.cnblogs.com/tdlian/archive/2011/11/25/2263054.html

这篇文章提供了各种语言的移植,遗憾的是没有发现PHP的移植:
http://www.byvoid.com/blog/tag/universalchardet/

贝尔·格力屌丝 answered 12 years, 2 months ago

Your Answer