
1 phuslu 2013 年 5 月 28 日 chardet |
2 fishsjoy 2013 年 5 月 28 日 非互联网公司的网页很多这样,chardet探测吧 |
3 alsotang 2013 年 5 月 28 日 |
4 xingzhi 2013 年 5 月 28 日 这是我以前写过的一段话,若有错误请指正: 对于网页编码的处理,一般是按以下几个顺序的: 1. 在http response headers, content-type中的charset属性值 2. 网页源码中, header里meta标签中, content属性中指定的charset值 3. xml文件中的encoding 4. 自动检测 可是,以上的情况,对于不遵循标准的网站来说,就会成问题了,例如: response headers没有提供charset response headers中的charset值与网页源码中的charset值不一样 如何解决? 我想的就是,浏览器怎么做,我就怎么做。 查了下资料,对于浏览器而言, 它也是按上述顺序来进行编码检测的, 并且: 当response headers没有提供charset时, 检测meta中的charset, 当两者不一样时,使用的是response headers中的charset。 |
5 xingzhi 2013 年 5 月 28 日 补充: 之所以不直接使用chardet, 是因为它的处理速度比较慢。 可以在charset判断不出编码的情况下,再来使用chardet。 |
6 013231 2013 年 5 月 28 日 |
7 luikore 2013 年 5 月 28 日 这种网页也没什么爬的价值... |
8 lookhi 2013 年 5 月 28 日 国内的你可以直接尝试UTF8 不行就直接GBK或GB18030 如果还不行,就放弃。这种不标准的一般都在这2个内. |
9 xuan_lengyue 2013 年 5 月 28 日 如果只是 GBK 和 UTF8 之间纠结的话可以检测的,UTF8 具有比较明显的特征,所以只要这段数据不是 UTF8 编码就是 GBK 了。 我目前用的一段代码见 https://gist.github.com/fireblue/5660870 基本上是 C 的,供楼主参考。 |