CNode

怎么判定抓取页面的数据编码 utf8 gbk

Iim007boy发布于14 年前最后回复13 年前7 回复10818 浏览0 收藏

除了response.headers['content-type']里 和正则匹配meta还有没有更直接的办法?meta还有啥的变态。。。

查看回复

回复 (7)

C
cloudaice#1·14 年前

用python的chardet模块,自动检测编码,不用管网站头中是否有定义编码,我之前自己写了一个自动检测网页编码和文件编码的程序,在这里,安装python的chardet模块,直接运行就可以了。

B
byvoid#2·14 年前

用 Mozilla 提供的 UniversalChardet

UniversalChardet 和 Chardet 都是Mozilla提供的編碼自動猜測工具,Chardet 已經被 UniversalChardet 淘汰。python的chardet是基於Chardet的,推薦使用 libuchardet

http://code.google.com/p/uchardet/

F
fengmk2#3·14 年前

就是页面给出charset,也不一定是真正的charset,例如百度的搜索结果页面。之前演示爬取百度搜索结果页,还出现过根据给出的charset无法转换编码的丑事。。。 Nodejs抓取非utf8字符编码的页面

I
im007boy#5·14 年前

现在用的是 iconv-lite 可以,但需要自己探测编码然后再转换

F
fish#6·14 年前

@byvoid 看起来很强大,谁给编译成node模块把,哈哈哈。

php的mbstring也有类似的功能,可以探测编码。

node里估计根据 utf8 , gbk的特征,检查buffer估计也是可以的,以前php里这么干过

F
freemem#7·13 年前

needle集成了iconv-lite,自动帮你完成转码工作,非常棒:https://github.com/tomas/needle

参与回复
登录后即可参与回复。登录