request({ uri: website_url, method: 'GET', encoding: 'binary' }, function (error, response, body) { body = new Buffer(body, 'binary'); conv = new iconv.Iconv('WINDOWS-1251', 'utf8'); body = conv.convert(body).toString(); } });
-->另外要说的是,iconv的使用时需要一些环境依赖的,见官方说明:https://github.com/TooTallNate/node-gyp
所以:
第一需要python对应版本(如2.7)的支持 ;
第二需要编译工具的支持(windows下出错最多)
出错类似这种
node,如无特定版本或更高版本,默认使用vs2005编译工具(所以出错提示的解决办法一般为按照vs2005和framwork sdk2.0)
问题解决方案:
1.安装visual stutio 2010
2.指定vs编译工具版本(如果是vs2012就是2012)
(有些时候会自动指定,所有也不一定需要这个命令 npm config set msvs_version 2010 --global)
3.如若还是提示找不到 framwork sdk,可将其安装路径添加到系统环境变量path中
(2010对应sdk4.0版本,类似的 2008 sdj3.5 2012 sdk4.5?)
另外要记得的是,环境变量只会读取第一个!
比如你之前已经有了 SDK2.0的路径设到了系统环境变量中,那么你现在再增加设置一个SDK4.0的路径的时候,起作用的只有第一个
所以:
要么把之前那个删了
要么把想添加的路径放到那个前面
二、gzip页面处理
有时候我们发现浏览器访问页面是正常的,但是模拟请求回来就乱码了,可以查看一下浏览器请求的Response信息,如果有Content-Encoding:gzip,极有可能是因为页面被gzip压缩了,这时请求时需要添加如下参数